RabbitMQ Round Robin With Acknowledge

时间:2013-11-18 21:27:11

标签: rabbitmq round-robin

假设我有一个包含大量消息的队列。我有2个消费者连接到该队列,都设置了prefetch = 1.这些消费者所做的工作需要一些时间,我不想在工作完成之前确认消息(如果消费者崩溃或某事 - 我希望消息在特殊情况下自动重新进入队列。)

但我也希望这些消费者能够并行工作,而这似乎并没有发生。换句话说,只要队列中有2条以上的消息,我就会期望两个消费者都很忙。

似乎正在发生的事情是消费者1收到消息,但消费者2将等待消费者1确认该消息。然后消费者2接收消息并且消费者1等待等

我有遗失的选择吗?或者这应该有效,我的代码中只有一个错误?或者这不可能吗?

1 个答案:

答案 0 :(得分:1)

您应该能够将消息从队列中拉出,而其他消费者仍在处理以前的消息。 RabbitMQ教程特别指出并行性是循环调度(http://www.rabbitmq.com/tutorials/tutorial-two-python.html)的强项。您的两个消费者是否在同一进程中作为线程运行?我想知道你是否在实施过程中犯了错误。