我正试图使用极限速率API来实现Spring Boot Rest应用程序,bucket4j基于以下在线资源
请在下面找到我的配置:
下面是为使用4bucketj而添加的maven依赖项:
...
<dependency>
<groupId>com.giffing.bucket4j.spring.boot.starter</groupId>
<artifactId>bucket4j-spring-boot-starter</artifactId>
<version>0.4.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>
..
以下是我的application.yml配置:
spring:
main:
allow-bean-definition-overriding: true
cache:
jcache:
config: classpath:ehcache.xml
bucket4j:
enabled: true
filters:
- cache-name: buckets
url: .*
http-response-body: "{ \"status\": 429, \"error\": \"Too Many Requests\", \"message\": \"You have exhausted your API Request Quota\" }"
rate-limits:
- bandwidths:
- capacity: 2
time: 1
unit: minutes
下面我添加了ehcache。路径src/main/resources/中的xml:
<config xmlns='http://www.ehcache.org/v3'
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jsr107="http://www.ehcache.org/v3/jsr107"
xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.0.xsd
http://www.ehcache.org/v3/jsr107 http://www.ehcache.org/schema/ehcache-107-ext-3.0.xsd">
<cache alias="buckets">
<expiry>
<ttl unit="seconds">3600</ttl>
</expiry>
<heap unit="entries">1000000</heap>
<jsr107:mbeans enable-statistics="true"/>
</cache>
最后,我在一个配置类中添加了EnableCaching,该类在spring启动时加载。
基于应用程序中的配置。yml文件API不应在一分钟内接受超过2个请求,如果超过两个请求,则应按照application.yml中的说明(http响应体)触发错误。
我已经在我的电脑上部署了应用程序,使用Postman工具,我能够在一分钟内点击Rest API超过10次,并且没有错误消息。
谁能告诉我为什么没有触发错误消息,因为它应该只允许2个请求,而我只发送10个?
我通过从第6点开始遵循本指南使其工作,但我可以发现与您的实现的唯一区别是缓存系统,因此我可以猜测问题出在那里。
我不能玩春云之门的限速器。我在这里配置网关: 我使用JMeter调用API循环1000次,但网关没有响应429响应中的请求太多。我哪里错了?
有人能详细说明酒吧/子系统实施的动态费率限制吗?我在gcloud文档或faq页面上找不到任何细节。 下面是我的pubsub用法:我计划在我们的生产中使用pubsub。现在,我有1个主题、1个订阅和1个订阅者(Webhook HTTPS回调)。有时我的订阅者可能会抛出异常(非常少),在这种情况下,我的订阅者将返回一个400响应给pubsub,以便pubsub可以保留消息并重试。 如果pubsub从用
速率限制配置参考 filter.http.RateLimit filter.http.RateLimit proto { "domain": "...", "stage": "...", "request_type": "...", "timeout": "{...}" } domain (string, REQUIRED) 需要调用速率限制服务时的域。 stage (uint3
速率限制配置参考。 filter.network.RateLimit filter.network.RateLimit proto { "stat_prefix": "...", "domain": "...", "descriptors": [], "timeout": "{...}" } stat_prefix (string, REQUIRED) 发布统计信息时使用的前缀。
速率限制配置概述。 { "name": "rate_limit", "config": { "domain": "...", "stage": "...", "request_type": "...", "timeout_ms": "..." } } domain (required, string) 调用速率限制服务时使用的域。 stage (opt
速率限制配置参考。 { "name": "ratelimit", "config": { "stat_prefix": "...", "domain": "...", "descriptors": [], "timeout_ms": "..." } } stat_prefix (required, string) 发布统计信息时使用的前缀。 domai