如何使用RateLimiter丢弃数据包?

时间:2016-01-08 19:06:45

标签: java rate-limiting

我尝试使用RateLimiter以每秒特定限制丢弃数据包。

final RateLimiter rateLimiter = RateLimiter.create(5000.0); // rate = 5000 permits per second
void submitPacket(byte[] packet) {
    rateLimiter.acquire(packet.length);
    networkService.send(packet);
}

问题是rateLimiter.acquire阻塞而不是丢弃数据包。如果所需带宽不在那里,我如何配置rateLimiter丢弃我的数据包?

1 个答案:

答案 0 :(得分:2)

RateLimiter.tryAcquire不会阻止,如果许可证不立即可用,则返回false。你可能只是写了像

这样的东西
if (rateLimiter.tryAcquire(packet.length)) {
   networkService.send(packet);
}