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

我使用的是限制使用的API,比方说:每秒不超过10个电话,每天不超过5000个电话.

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

最佳答案 当您使用
Beanstalkd时,您可以让管暂停一段时间.

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

你可以从你的API响应中找出暂停管的时间(通常它们会被锁定直到时间X),或者在接下来的60秒内开始自适应,例如暂停,并在旅途中增加/减少.

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

还有一篇关于distributed rate limiting using redis的好文章

点赞