多个消费者,但每种消费者只有一个

Multiple consumers but only one of each kind

我有服务 A、B 和 C(可能还有更多),我可能有 NA、NB 和 NC 运行 个实例。

我希望能够通知服务 A、B 和 C(以及可能存在的所有其他服务)给定事件已经发生(如 fanout),但是我希望每个服务只有一个实例收到通知(如在 工作队列 中)。

这可以用 Spring AMQP 实现吗?

您的每个服务都必须提供绑定到该扇出交换器的自己的队列。独立于实例(但不是服务),队列必须相同。因此,它看起来像是同一个队列中的多个消费者,但只有其中一个会收到一条消息。

坦率地说,您根本不需要考虑重复。就像开发应用程序一样,它只是一个实例。并将其分布在集群中。只有一个消费者(每个服务)将处理您的消息。