1

我在不同的数据中心有 2 个 RabbitMQ 集群。此时我需要将其中一个交换从一只兔子铲到另一只兔子。我怎样才能实现它?

4

2 回答 2

0

铲子插件最适合此任务,有助于在集群之间(或同一集群内)可靠且持续地移动消息。该插件包含在 RabbitMQ 发行版中,并且易于启用(可以在其中一个集群上进行配置):

rabbitmq-plugins enable rabbitmq_shovel

如果您更喜欢 UI,请为管理 UI 启用管理插件:

rabbitmq-plugins enable rabbitmq_shovel_management 

下一步是定义动态铲本身(如果您计划在集群之间永久移动消息,则使用静态铲)。文档中对铲子的声明进行了很好的定义。请考虑您需要配置src-exchangeanddest-exchange而不是src-queueand dest-queue

于 2020-09-27T07:42:24.630 回答
0

为了补充 Sergii 的回答,以下是我如何创建从生产集群到测试集群的铲子。

call rabbitmqctl.bat set_parameter shovel [shovel_name] "{""src-protocol"": ""amqp091"", ""src-uri"":""amqp://[username]:[password]@localhost"", ""src-exchange"": ""[source_exchange]"", ""src-exchange-key"": ""#"", ""dest-protocol"": ""amqp091"", ""dest-uri"": ""amqp://[username]:[password]@[target_cluster_server]"", ""dest-exchange"": ""[target_exchange]""}"

它创建了一个动态铲子,我更喜欢它,因为它会自动将自身复制到源集群中的其他节点。

您可以在 dest-uri 中提供多个目的地,因此如果目标节点已关闭,铲子将尝试另一个。

src-exchange-key是因为来源是话题交流。

除了查看目标交易所是否收到您所期望的之外,我认为没有任何方法可以检查行为。

https://www.rabbitmq.com/shovel.html#clustering

于 2020-09-28T12:10:44.303 回答