【发布时间】:2021-03-17 22:29:40
【问题描述】:
我想以 5/秒的速率向外部 API 发送请求,如下所示:
//limit sending rate to 5 per second
RateLimiter rateLimiter = RateLimiter.create(5);
然后我将这个 rateLimiter 传递给方法(通过 for 调用):
for(...){
broadcastToken = sendTemplateService.sendBroadcastPetition(broadcastInput, rateLimiter);
}
在这个方法中我做了很多事情:
public BroadcastToken sendBroadcastPetition(BroadcastInput broadcastInput, RateLimiter rateLimiter) {
//do a lot of stuff
rateLimiter.acquire();
restTemplate.exchange(broadcastUrl, HttpMethod.POST, entity, String.class);
}
我的方法正确吗?我不希望整个方法每秒执行 5 次,我想要的是对 API 的调用最大为每秒 5 次。
这个 RateLimiter.create(5) 只会影响下一行?
【问题讨论】: