spring Bucket4j未运行,至速率限制API

8qgya5xd  于 2023-03-16  发布在  Spring
关注(0)|答案(1)|浏览(99)

Pom.xml文件

<groupId>com.giffing.bucket4j.spring.boot.starter</groupId>
        <artifactId>bucket4j-spring-boot-starter</artifactId>
        <version>0.7.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.cache</groupId>
        <artifactId>cache-api</artifactId>
    </dependency>
    <dependency>
        <groupId>com.github.ben-manes.caffeine</groupId>
        <artifactId>caffeine</artifactId>
        <version>2.8.2</version>
    </dependency>
    <dependency>
        <groupId>com.github.ben-manes.caffeine</groupId>
        <artifactId>jcache</artifactId>
        <version>2.8.2</version>
    </dependency>

应用程序本地.yml文件

spring:
  cache:
    cache-names:
      - rate-limit-buckets
    caffeine:
      spec: maximumSize=100000,expireAfterAccess=3600s

bucket4j:
  enabled: true
  filters:
  - cache-name: rate-limit-buckets
    filter-method: servlet
    strategy: first
    url: /patient
    http-response-body: "{ \"status\": 429, \"error\": \"Too Many Requests\" }"
    rate-limits:
      - expression: getRemoteAddr()
        bandwidths:
        - capacity: 1
          time: 30
          unit: seconds

我已经将容量设置为1,时间设置为30 s,以便在30 s内收到2个API命中时出现“太多请求”错误,但我没有收到任何错误或任何东西,基本上bucket 4j速率限制甚至没有像看起来那样运行。
是我的应用程序-本地.yml甚至正在加载?早些时候,我在www.example.com文件中的配置application-local.properties和速率限制器是不工作的,也,在探索互联网后,一些人建议使用.yml文件来加载bucket 4j配置,所以我也这样做了,但即使是现在它也不工作。

x8diyxa7

x8diyxa71#

我相信您在配置bucket 4j时也提到了this guide。我能发现的唯一明显的区别是我的配置和您的配置之间的版本。我建议您升级您的依赖项。我使用的是 Boot
应用程序.yml文件

spring:
  cache:
    cache-names:
      - rate-limit-buckets
    caffeine:
      spec: maximumSize=100000,expireAfterAccess=3600s

bucket4j:
  enabled: true
  filters:
    - cache-name: rate-limit-buckets
      url: .*
      http-status-code: TOO_MANY_REQUESTS
      http-response-body: "{ \"error\": true, \"message\": \"You have exhausted your API Request Quota\" }"
      rate-limits:
        - cache-key: getRemoteAddr()
          bandwidths:
            - capacity: 1
              time: 30
              unit: seconds

pom.xml文件

<dependencies>
    <dependency>
        <groupId>com.giffing.bucket4j.spring.boot.starter</groupId>
        <artifactId>bucket4j-spring-boot-starter</artifactId>
        <version>0.9.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.cache</groupId>
        <artifactId>cache-api</artifactId>
    </dependency>
    <dependency>
        <groupId>com.github.ben-manes.caffeine</groupId>
        <artifactId>caffeine</artifactId>
        <version>3.1.5</version>
    </dependency>
    <dependency>
        <groupId>com.github.ben-manes.caffeine</groupId>
        <artifactId>jcache</artifactId>
        <version>3.1.5</version>
    </dependency>
</dependencies>

  • 表达式:getRemoteAddr()已更改为-缓存键:新版本中的getRemoteAddr()。

你可能也想看看the github page
希望这个有用。

相关问题