使用Spring Webflux阻止请求的数量

时间:2018-07-16 12:44:31

标签: spring spring-webflux project-reactor reactor

我目前使用Spring Boot 2(Spring webflux)公开了以下响应式服务

@RequestMapping(value = "/tasks/v1", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public Mono taskForUserV1(@RequestParam(value = "userId", required = true) String userId,
                                                 @RequestParam(required = false) Map<String, String> userData) {
return service.taskForUserV1(userId, userData);
}

但是,如果请求的数量超过500,我想向请求我的服务的客户端抛出异常。该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以看看由resileince4j @ https://resilience4j.github.io/resilience4j/#_rate_limiting实现的Rate Limiter设计模式

RateLimiter rateLimiter = RateLimiter.ofDefaults("testName");

Retrofit retrofit = new Retrofit.Builder()
        .addCallAdapterFactory(RateLimiterCallAdapter.of(rateLimiter))
        .baseUrl("http://localhost:8080/")
        .build();