如何在连接到联合时避免接收我的消息?

时间:2016-04-05 20:46:20

标签: rabbitmq amqp

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

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

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

为计算机安装了相同的软件" B"和" C"。

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

一切都按预期工作:当应用程序在交换时发送消息" MessageExchange"在计算机" A",在计算机和#34; A"," B"和" C"收到消息。

我的问题如下:如果发送邮件的应用程序在计算机上,并且#34; A&#34 ;,则计算机上的每个应用程序" A"接收消息两次:来自本地RabbitMQ服务器的一条消息和来自远程联合的一个副本。

我该如何避免这种情况?

这是一些额外的信息:

  • 远程RabbitMQ服务器可以随时断开连接,整个邮件系统应该继续工作(当然只在本地网络上)whitout修改本地配置
  • 有这种行为(连接或不连接远程服务器)我在任何地方使用相同的交换名称。这可能是我的问题的根源
  • 通过在远程服务器上添加标头并在不同的应用程序中实现过滤器,我已成功过滤了两次收到的消息,但我认为通过使用RabbitMQ / AMQP配置可以完成同样的操作,而无需编写代码

0 个答案:

没有答案