问题在哪里:
我们使用 RabbitMQ 作为任务队列。具体任务之一 - 向 Vkontakte 社交网络发送通知。他们的 api 对每秒请求有限制,这个限制取决于您的应用程序大小。只有 3 次调用少于 10 万人的应用程序,依此类推。所以我们需要人为地限制对他们服务的请求。现在这个逻辑是基于应用程序的。虽然每个这样的队列只能使用一个工作人员,但很简单,只需设置诸如 sleep(300ms) 之类的东西并保持冷静。但是,当您应该使用 N 个工作人员时,这种同步就变得不简单了。
如何使用 RabbitMQ 限制吞吐量?
根据上面的故事。如果可以设置预取大小,不仅基于消息而且基于时间的逻辑可以非常简单。例如,“qos to 1 message per fetch not faster than 1 time in seconds”等等。
- 有这样的事情吗?
- 可能是其他策略吗?