我目前使用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,我想向请求我的服务的客户端抛出异常。该怎么办?
答案 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();