RabbitMQ:只有在确认前一条消息后才能将下一条消息出队

yto*_*ano 3 rabbitmq mq

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

在确认前一条消息(正在处理的消息)之前,队列中的下一条消息无法出队。

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

编辑(澄清):将会有许多消费者都试图从所有队列中获取工作,并且由于他们无法从正在处理未确认的事件的队列中获取工作 - 维持有序处理。

Der*_*ley 5

在确认前一条消息(正在处理的消息)之前,队列中的下一条消息无法出队。

您可以通过单个消费者的消费者预取限制来做到这一点。

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

不幸的是,这不会达到您想要的效果。

您可以为个人消费者设置。该消费者将等待一条消息被确认,然后再获取下一条消息。

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

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

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