如何使用RabbitMQ限制吞吐量?

时间:2014-08-27 09:19:09

标签: rabbitmq message-queue task-queue vk

问题在哪里:

我们使用RabbitMQ作为任务队列。其中一项具体任务 - 向Vkontakte社交网络发送通知。他们api限制每秒请求和此限制根据您的应用程序大小。只需3个电话就可以获得不到10万人的应用程序,依此类推。所以我们需要人为地限制对他们的服务请求。现在这个逻辑基于应用程序。这很简单,虽然每个队列只能使用一个工作人员,但只需设置睡眠(300毫秒)并保持冷静。但是当你应该使用N个工作者时,这种同步变得微不足道。

如何使用RabbitMQ限制吞吐量?

基于上面的故事。如果可能的话,设置预取大小不仅基于消息,而且基于此逻辑的时间可以非常简单。例如,“每次获取的qos到1条消息不会快于1次,以秒为单位”等等。

  1. 有类似的东西吗?
  2. 可能是其他策略吗?

1 个答案:

答案 0 :(得分:1)

RabbitMQ无法开箱即用。

你是对的,对于分布式消费者而言,这种节流变得很困难。我建议看一下ZooKeeper,它允许你通过利用它的Znodes / Watches来同步所有消费者并限制消息的处理。 用于限制但可扩展的解决方案。