rabbitmq - 随着时间的推移限制队列

标签 rabbitmq message-queue zeromq beanstalkd

我使用的 API 的使用受到限制,假设:每秒调用次数不超过 10 次,每天调用次数不超过 5000 次。

我正在 beanstalkd 队列进程作业中处理此调用。考虑到 API 的限制,我如何限制此作业的处理。

最佳答案

当您使用Beanstalkd时您可以让 pipe 暂停几秒钟。

当您预订作业时,并且您知道 API 调用在该调用期间失败,您可以将管道暂停 X 秒

您可以从 API 响应中找出暂停管道所需的时间(通常会返回您在 Time X 之前被锁定),或者从自适应的方式开始,例如在接下来的 60 秒内暂停秒,并随时增加/减少。

如果您知道可以延迟或提前分散,则在将作业放入队列之前,您还可以向作业添加延迟,这样它就不会立即执行,这样您就可以将作业分配到时间。

还有一篇关于 distributed rate limiting using redis 的精彩帖子

关于rabbitmq - 随着时间的推移限制队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21752577/

相关文章:

linux - Rabbitmq 服务器启动失败

java - 读取而不从 JMS 队列中删除消息

real-time - 从主机 A 向主机 B 发送消息的最快(最低延迟)消息队列解决方案是什么?

zeromq - 没有转发器的 zeroMQ 库中的消息广播

当机器非常活跃时,RabbitMQ/EasyNetQ 会断开连接吗?

php - 运行 Symfony 命令时无法加载 PHP 类

kubernetes - RabbitMQ 管理 - 加载队列或交换时出现 404

rabbitmq - 多主题消息队列

java - JMS/消息队列的真实使用?

zeromq - ZMQ : Multiple request/reply-pairs