Rabbitmq 如何避免在连接到联盟时两次收到我的消息?

Rabbitmq 如何避免在连接到联盟时两次收到我的消息?,rabbitmq,amqp,Rabbitmq,Amqp,我使用AMQP协议在应用程序之间发送消息。我使用RabbitMQ作为服务器 我有一个本地RabbitMQ服务器在计算机“a”上运行。因此,不同的应用程序可以在计算机“A”本地网络上发送/接收消息 所有消息都使用名为“MessageExchange”的单个“扇出”交换发送:当应用程序在计算机“a”上发送消息时,计算机“a”上的每个应用程序都会收到此消息 计算机“B”和“C”安装了相同的软件 现在,计算机“A”、“B”和“C”通过使用配置为在所有RabbitMQ本地实例之间创建联合的公共远程Rabb

我使用AMQP协议在应用程序之间发送消息。我使用RabbitMQ作为服务器

我有一个本地RabbitMQ服务器在计算机“a”上运行。因此,不同的应用程序可以在计算机“A”本地网络上发送/接收消息

所有消息都使用名为“MessageExchange”的单个“扇出”交换发送:当应用程序在计算机“a”上发送消息时,计算机“a”上的每个应用程序都会收到此消息

计算机“B”和“C”安装了相同的软件

现在,计算机“A”、“B”和“C”通过使用配置为在所有RabbitMQ本地实例之间创建联合的公共远程RabbitMQ服务器联网在一起。每个RabbitMQ本地实例配置为将其消息“铲”到远程服务器

一切正常:当应用程序在计算机“a”上的exchange“MessageExchange”上发送消息时,在计算机“a”、“B”和“C”上运行的每个应用程序都会收到消息

我的问题如下:如果发送消息的应用程序位于计算机“A”上,则计算机“A”上的每个应用程序都会收到两次消息:一条消息来自本地RabbitMQ服务器,另一条消息来自远程联合

我怎样才能避免这种情况

以下是一些附加信息:

  • 远程RabbitMQ服务器可随时断开连接,整个消息传递系统应继续工作(当然,仅在本地网络上),而无需修改本地配置
  • 为了实现这种行为(无论是否连接远程服务器),我在任何地方都使用相同的exchange名称。这可能是我问题的根源
  • 通过在远程服务器上添加一个头并在不同的应用程序中实现过滤器,我已经成功地过滤了两次收到的消息,但我认为,通过使用RabbitMQ/AMQP配置,无需编写代码,也可以做到这一点