RabbitMQ:包含许多任务的消息的Dispatcher

时间:2016-07-02 10:20:30

标签: python rabbitmq pika

我正在尝试通过RabbitMQ分发包含许多任务的消息:

Producer --> RabbitMQ Exchange --> 10 Consumers

例如为: 用户向包含1000个任务的交换机发送消息。交换需要将任务均匀地分配给队列最短的消费者。

由于生产者不了解RabbitMQ中使用的排队机制,因此交换需要一些自定义逻辑,用于将订单拆分为任务并将其分发到消费者队列。

这是怎么做到的? (我对生产者和消费者都使用Python / Pika。)

1 个答案:

答案 0 :(得分:2)

如果您使用单个队列,并且有多个使用者连接到该队列并利用Consumer Prefetch (QoS),那么听起来会更简单。这样,您可以向该队列发送1000条消息,并让可用的消费者接收消息。

Producer --> RabbitMQ Exchange --> RabbitMQ Queue --> 10 Consumers

Consumer Prefetch(QoS)基本上只是意味着您可以设置消费者预取的消息数。例如,如果将此值设置为1,则pika一次只能获取并处理一条消息,从而使其他消费者有机会消费和处理其他999条消息。