使用番石榴限速后如何在创造后爆裂

时间:2015-06-05 20:31:04

标签: guava

我们正在使用guava 16.0.1

在RateLimiter.create(MaxRequestsPerSecond)上,我不能马上爆发。我们希望允许这样做,因为客户速率限制器仅在第一次请求时创建并且现在被缓存(太多客户将所有这些限制在其中)。

理想情况下,我只是将storedPermits设置为某个数字,但我似乎无法做到这一点。此外,预热只允许2倍或3倍的请求率或其他东西,所以他们不能同时在门外同时做3个请求。

有没有办法在创建RateLimiter时立即允许爆发?

感谢, 迪安

2 个答案:

答案 0 :(得分:1)

是的,RateLimiter是软件包私有的,因此您可以自己扩展它。

在代码的同一包中创建一个类,以访问基础的storagePermits。请参阅下面的实现,并根据内部实现更改时使用的Guava版本进行调整。

{{1}}

答案 1 :(得分:0)

我们的工作是预先创建RateLimiters,因为无法初始化StoredPermits。我们抓住一个(并添加一个新的),希望新的一个有足够的时间为下一个客户建立许可,只要我们的队列大小足够大,以满足客户群的需求。