RabbitMQ:下一条消息只能在前一条消息被确认后才能出队
RabbitMQ: next message can be dequeued only after previous was acked
我想在 RabbitMQ 的队列上有这个约束:
在确认上一条消息(正在处理的消息)之前,队列中的下一条消息不能出队。
通过这个我将实现事件的有序处理和跨多个队列的并行处理。 I/can 我如何为此配置 RabbitMQ?
编辑(澄清):将有许多消费者都试图从所有队列中获取工作,并且由于他们无法从正在处理未确认事件的队列中获取工作 - 有序处理是维护。
Next message in the queue can't be dequeued before previous message (the one being processed) is acked.
您可以通过 consumer prefetch limit 为单个消费者执行此操作。
Through this I will achieve ordered processing of events and parallel processing across multiple queues.
很遗憾,这不会达到您想要的效果。
可以为个人消费者设置。该消费者将等待一条消息被确认,然后再获取下一条消息。
但是,这适用于单个消费者,不适用于队列。
如果你有 2 个消费者,他们每个人都会并行处理一条消息。如果您有 10 个消费者,将并行处理 10 条消息。
按顺序处理每条消息的唯一方法是让一个消费者的预取值为 1。
我想在 RabbitMQ 的队列上有这个约束:
在确认上一条消息(正在处理的消息)之前,队列中的下一条消息不能出队。
通过这个我将实现事件的有序处理和跨多个队列的并行处理。 I/can 我如何为此配置 RabbitMQ?
编辑(澄清):将有许多消费者都试图从所有队列中获取工作,并且由于他们无法从正在处理未确认事件的队列中获取工作 - 有序处理是维护。
Next message in the queue can't be dequeued before previous message (the one being processed) is acked.
您可以通过 consumer prefetch limit 为单个消费者执行此操作。
Through this I will achieve ordered processing of events and parallel processing across multiple queues.
很遗憾,这不会达到您想要的效果。
可以为个人消费者设置。该消费者将等待一条消息被确认,然后再获取下一条消息。
但是,这适用于单个消费者,不适用于队列。
如果你有 2 个消费者,他们每个人都会并行处理一条消息。如果您有 10 个消费者,将并行处理 10 条消息。
按顺序处理每条消息的唯一方法是让一个消费者的预取值为 1。