我有一个 直接的 交换器。还有一个绑定到该交换器的队列。
我有两个消费者针对该队列。这些消费者手动在完成相应处理后确认消息。
这些消息是逻辑排序/分类的,应按该顺序处理。是否可以强制要求所有消息在A和B消费者之间顺序地接收和处理?换句话说,防止A和B同时处理消息。
注意:消费者不共享同一连接或通道。这意味着我不能使用<channel>.basicQoS(1);
。
这个问题的原因是:两个消费者完全相同。如果一个出现问题,另一个队列会开始处理消息,并且一切都会正常工作,无需任何干预。
我有一个 直接的 交换器。还有一个绑定到该交换器的队列。
我有两个消费者针对该队列。这些消费者手动在完成相应处理后确认消息。
这些消息是逻辑排序/分类的,应按该顺序处理。是否可以强制要求所有消息在A和B消费者之间顺序地接收和处理?换句话说,防止A和B同时处理消息。
注意:消费者不共享同一连接或通道。这意味着我不能使用<channel>.basicQoS(1);
。
这个问题的原因是:两个消费者完全相同。如果一个出现问题,另一个队列会开始处理消息,并且一切都会正常工作,无需任何干预。
A
和B
不应同时处理消息。因此确实是A或B
。然而,我认为让A
和B
都运行起来会很有用:如果A
(或B
)崩溃,系统可以在没有任何(手动)干预的情况下继续运行。我从您那里了解到我的方法并不是真正可行的。但问题是:如何实现从A
(或B
)到B
(或A
)的正确故障转移? - Kanarie PietA
设置一个监控代理(看门狗),如果它崩溃了,就重新启动它,而不是通过任何方式从 A
切换到 B
。消息不会丢失,它们将留在队列中,并在消费者再次上线时被传递。 - cantSleepNow