我一直玩弄一個打擊系統,並偶然發現了番石榴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