多个消费者时的 RabbitMQ 和 FIFO

RabbitMQ and FIFO when multiple consumers

我们有多个消费者来处理创建消息,但我们要确保 FIFO 顺序,因此如果我们创建产品 A,我们必须拒绝产品 A 的下一个创建。

问题是因为我们有多个消费者来处理这种类型的消息,所以消费者 1 可能在消费者 2 之后完成。例如,消息 1 与消息 2 相比包含更多要保存的数据产品。

运行 多个消费者的RabbitMQ违反了队列的先进先出原则。有没有办法用 RabbitMQ 避免这种情况,或者我们必须以控制更 Java 威胁导向的方式来定位我们的体系结构?

谢谢

Running RabbitMQ with multiple consumers violates FIFO principle of queue.

不,不是。消息以 FIFO 顺序传送。多个消费者将导致消息在它们之间循环传递,但它们仍按 FIFO 顺序传递。

如果你想保留这个订单,你必须只使用一个消费者,或者协调你的消费者进程之间的工作。


注意: RabbitMQ 团队监控 the rabbitmq-users mailing list 并且有时只在 Whosebug 上回答问题。