1

我在不同的数据中心有 2 个 RabbitMQ 集群。目前,我们正在将其中一个交换从一只兔子转移到另一只兔子,但现在我们也需要朝另一个方向推进。我们如何在不导致无限循环的情况下实现这一点?

一位同事认为我们可以勾选“添加转发标头”选项,然后使用标头交换进行过滤。但是,添加的标题似乎是嵌套的,我还没有找到与标题匹配的方法?

4

1 回答 1

1

似乎基于您提供的附加描述:

  • 您在交易所之间使用铲子
  • 猜测交换类型是扇出

我可以看到两种方法来处理你想要做的事情:

  • 使用联邦,并在每个集群中的交换机之间双向配置它
  • 还是用shovel,但是在每个exchange上定义一个新的queue,配置一个queue到queue shovel

对于铲子选项:您在集群 1 上有交换 A,在集群 2 上有交换 A,在每个集群上都有您的 main_queue

  • 在每个集群上创建一个secondary_queue,绑定到exchange A。
  • 从集群 1 上的辅助队列创建铲子到集群 2 上的 main_queue
  • 从集群 2 上的辅助队列创建铲子到集群 1 上的 main_queue

联合的好处:更简单,即使您配置了复杂的路由

铲子的好处:如果您有重大连接中断的风险(我会说超过一分钟),那就更好了。在这种情况下,您不会丢失消息,而在联合情况下可能会发生某些消息不会在两个集群上复制的情况。

于 2018-04-28T18:42:19.067 回答