如何配置RabbitMQ shovel?

3

我有两个位于不同数据中心的RabbitMQ集群。目前,我需要将其中一个交换机从一个Rabbit传输到另一个Rabbit。我应该如何实现它?

2个回答

2

铲子插件是这个任务的最佳选择,可以可靠地和持续地在集群之间(或同一集群内部)传递消息。该插件已包含在RabbitMQ发行版中,并且很容易启用(可以在其中一个集群上进行配置):

rabbitmq-plugins enable rabbitmq_shovel

如果你喜欢用户界面,可以启用管理插件来使用管理界面。
rabbitmq-plugins enable rabbitmq_shovel_management 

下一步是定义动态铲子本身(如果你计划在集群之间永久移动消息,那就使用静态铲子)。铲子的声明在文档中有很好的定义。请注意,你需要配置src-exchangedest-exchange而不是src-queuedest-queue

谢谢你的分析。实际上,我已经配置了铲子和铲子管理的声明。所有的设置部分都是通过兔子界面完成的。我只需要将一个集群上的兔子的消息铲到另一个集群上的兔子中。我想在铲子消息时检查行为,所以请问你能指导我如何在兔子界面上进行消息铲吗? - undefined
这里是关于铲子状态的文档 https://www.rabbitmq.com/shovel.html#status-management 如果铲子状态是绿色的,那么它正在正常工作,消息应该会传送到目标交换机。 - undefined
我已经完成了设置,但是在设置完毕后,我的铲车状态仍然显示为“启动中”。我检查了目标URL和源URL,两者都正常。但是不确定为什么铲车状态一直停留在“启动中”。 - undefined

0
为了补充Sergii的回答,这是我如何从生产集群复制到测试集群创建一个铲子。
调用 rabbitmqctl.bat set_parameter shovel [铲子名称] "{"src-protocol": "amqp091", "src-uri":"amqp://[用户名]:[密码]@localhost", "src-exchange": "[源交换机]", "src-exchange-key": "#", "dest-protocol": "amqp091", "dest-uri": "amqp://[用户名]:[密码]@[目标集群服务器]", "dest-exchange": "[目标交换机]"}"
它创建了一个动态铲子,我更喜欢它,因为它会自动复制到源集群中的其他节点上。
您可以在dest-uri中提供多个目标,所以如果目标节点宕机,铲子将尝试连接另一个目标。
src-exchange-key 是因为源是一个主题交换机。
我认为没有其他办法可以检查行为,除非看目标交换机是否收到预期的内容。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接