java - 如何使用 RateLimiter 丢弃数据包?

标签 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 来丢弃我的数据包?

最佳答案

RateLimiter.tryAcquire不会阻止,而是在许可证不能立即可用时返回 false。你可能会写这样的东西

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

关于java - 如何使用 RateLimiter 丢弃数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34684279/

相关文章:

java - 如何检查 JSP 是否连接到数据库?

c# - RateLimiting - 不正确的限制

javascript - node.js 中的速率限制 API 查询

node.js - Node 服务器中的 Express-rate-limit 与 NGINX

javascript - 通过 Nodejs 进行多个 API 连接

rsyslog - CentOS 7 rsyslog 删除 C/C++ 模块的 DEBUG 日志

java - 如何从java调用oracle函数。函数返回数字

java - 解密加密流时出现 BadPaddingException

java - 使用 and 运算符进行 Eclipse Java 编码

java - 在 java 中重新打开文件的正确方法是什么?