如何使用 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);
}
我正在尝试使用 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);
}