是否有一种方法可以配置对使用RabbitMQ交换/队列传递的消息的“恰好一次”处理?基本上,我们有一个消耗性的应用程序,它由一个群集中的2个节点组成,这两个节点都将订阅Rabbit上的同一队列,但是这两个节点中只有一个在给定的时间处理消息。我的第一个想法是,考虑到兔子使用“循环”消息传递,这是开箱即用的,但是我们不能保证将来不会有其他消费者。最佳做法是为每个使用的应用程序创建特定的队列并使用默认的循环分配功能吗?
答案 0 :(得分:0)
与现有使用者一样,队列的其他使用者将成为循环消息使用者的一部分。路由到报价的每封邮件都将准确地传递给一个消费者。
为每个使用中的应用程序创建一个排他队列将导致如何确保语义一模一样的问题。这将需要RabbitMQ将每条消息路由到这些队列之一。为了实现这一点,交换将以循环方式进行路由。在AMQP中是不可能的。
使用一个队列,并使用任意数量的工作线程消耗来自该队列的消息。这将为您提供一次语义。