1

假设我有一个队列,里面有一堆消息。我有 2 个消费者连接到该队列,两者都设置为 prefetch = 1。这些消费者所做的工作需要一些时间,我不想在工作完成之前确认消息(以防消费者崩溃或其他情况- 我希望消息在特殊情况下自动重新进入队列)。

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

相反,似乎发生的是消费者 1 收到一条消息,但消费者 2 将等到消费者 1 确认该消息。然后消费者 2 收到一条消息,消费者 1 等待,等等。

有没有我错过的选项?或者这应该有效吗,我的代码中只是有一个错误?或者这是不可能的?

4

1 回答 1

1

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

于 2013-11-18T22:07:12.977 回答