我需要限制每分钟的请求数。我还没有找到任何方法来使用SpringCloudGateway+redis。以下是当前的建议mentation:image implementation
private void builderRouter(CustomRouterLocatorDto customRouter) {
customRouter.getBuilder().route(r -> r
.path(customRouter.getPath())
.filters(f -> {
if(!customRouter.getRewritePath().equals("/"))
f.rewritePath(customRouter.getRewritePath() + "(?<segment>/?.*)", "$\\{segment}");
f.circuitBreaker(c -> c.setName("cbServicies").setFallbackUri("forward:/offlineservicies/down"));
if(customRouter.isEnableRateLimiter()) {
f.requestRateLimiter()
.rateLimiter(RedisRateLimiter.class, rl ->
rl.setBurstCapacity(customRouter.getBurstCapacity())
.setReplenishRate(customRouter.getReplenishRate())
).and();
}
return f;
})
.metadata(RouteMetadataUtils.RESPONSE_TIMEOUT_ATTR, RESPONSE_TIMEOUT_ATTR_VALUE_MILLIS)
.metadata(RouteMetadataUtils.CONNECT_TIMEOUT_ATTR, CONNECT_TIMEOUT_ATTR_VALUE_MILLIS)
.uri(customRouter.getUriType() + customRouter.getServiceName())
);
}
setburstcapacity(customrouter.getburstcapacity())setRefunderRate(customrouter.getRefunderRate())
两者仅在几秒钟内运行。示例:在同一秒钟内有20个请求。
一分钟内我需要20个请求。
暂无答案!
目前还没有任何答案,快来回答吧!