我一直玩弄一个打击系统,并偶然发现了番石榴RateLimiter。从我可以告诉它处理节流的两种主要方式是通过排队请求(.acquire(...)方法)或通过丢弃它们(tryAcquire(...)方法)番石榴RateLimiter爆裂
我是认为会有一个选项允许请求达到指定的数量,并且只有在达到所述限制队列或放弃请求之后。
例如:
public static void main(String[] args)
{
try
{
RateLimiter limiter = RateLimiter.create(5.0);
//fictive call not saying it should be implemented this way
limiter.allowBursts(true);
for(int i = 0; i < 20; i++)
{
Thread.sleep(100);
performOperation(limiter);
}
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
private static void performOperation(RateLimiter limiter)
{
if(limiter.tryAcquire())
{
System.out.println(Instant.now() + ": Beep");
}
}
这将然后打印出五声蜂鸣声,忽略未来五年,然后重新再打印五
我是唯一一个认为这将是一个有用的功能,有或我错过了这一点吗?测试代码礼貌的
: Throttling method calls using Guava RateLimiter class
我们不想为它添加固定大小的队列。我只希望它在时间段Y内接受第一个X请求。然后忽略或排队下一个包含的消息(根据已有的功能)。一旦间隔结束,再次接受X并重复。 希望它是有道理的? – Rhed