如何使用 RateLimiter 丢弃数据包?

How can I drop packets using RateLimiter?

我正在尝试使用 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 来丢弃我的数据包?

RateLimiter.tryAcquire 不会阻塞,而是在许可证不能立即可用时返回 false。你可能只写类似

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