RabbitMQ:下一条消息只有在上一次被激活后才能出列

时间:2015-09-07 10:49:58

标签: rabbitmq mq

我想在RabbitMQ中对队列进行此约束:

队列中的下一条消息无法在先前的消息(正在处理的消息)被激活之前出列。

通过这个,我将实现跨多个队列的事件和并行处理的有序处理。我如何为此配置RabbitMQ?

编辑(澄清):将有许多消费者都试图从所有队列中获得工作,因为他们无法从正在处理的事件的队列中获得工作,而不是订购 - 订购处理得以维持。

1 个答案:

答案 0 :(得分:3)

  

队列中的下一条消息在上一条消息(正在处理的消息)被激活之前无法出列。

您可以通过consumer prefetch limit为单个消费者执行此操作。

  

通过这个,我将实现跨多个队列的事件和并行处理的有序处理。

不幸的是,这不会产生你想要的效果。

您可以为个人消费者设置。消费者在获得下一个消息之前会等待消息被确认。

但是,这适用于个人消费者,而不是队列。

如果您有2个消费者,则每个消费者将并行处理消息。如果你有10个消费者,将同时处理10条消息。

按顺序处理每条消息的唯一方法是让一个消费者预取1。