Rabbitmq 随时间限制队列

Rabbitmq 随时间限制队列,rabbitmq,message-queue,zeromq,beanstalkd,Rabbitmq,Message Queue,Zeromq,Beanstalkd,我使用的API的使用受到限制,比如说:每秒不超过10个调用,每天不超过5000个调用 我正在beanstalkd队列进程作业中处理此调用。考虑到API的限制,如何限制此作业的处理 使用时,可以将试管暂停几秒钟 当您保留一个作业,并且您知道API调用在该调用期间失败时,您可以将试管暂停X秒 您可以从API响应(通常返回到时间X)中找到暂停试管所需的时间,或者从自适应的方式开始,如暂停60秒,然后在移动中增加/减少 如果您知道在将作业放入队列之前可以延迟或提前分散作业,还可以向作业添加延迟,这样它就

我使用的API的使用受到限制,比如说:每秒不超过10个调用,每天不超过5000个调用

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

使用时,可以将试管暂停几秒钟

当您保留一个作业,并且您知道API调用在该调用期间失败时,您可以将试管暂停
X秒

您可以从API响应(通常返回到
时间X
)中找到暂停试管所需的时间,或者从自适应的方式开始,如暂停60秒,然后在移动中增加/减少

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


还有一篇关于

的帖子,如果所有工人共享持久状态,他们可以更新共享状态并集体实施速率限制

如果唯一的共享可写状态是队列本身,则可以为速率受限作业创建票证管道,并使用速率限制管理器插入票证(权限单)来控制作业何时运行。需要对工人进行调整,需要一种暂停未使用门票的方法,但应该是可行的


编辑:票证中的“有效期至”时间戳可以达到每秒的限制。每日限额可能需要一个反馈管道,让费率限额经理了解实际使用情况(实现24小时滚动窗口,而不是在午夜重置5000个限额)

您的API是否返回您可以自由使用下一次调用的时间?(当你用掉所有的学分时)。谁把工作排在队列里,你能在那里吗?