繁体   English   中英

集群中的RabbitMQ Shovel插件

[英]RabbitMQ Shovel plugin in a cluster

我们有一个配置了三个节点的RabbitMQ集群。 每个节点都有两个虚拟主机(Vhost-A和Vhost-B)。 我们需要将消息从Vhost-A移到Vhost-B的可能性。 为此,我们设置了一个铲子,将消息从Vhost-A上的Exchange-1定向到Vhost-B上的Exchange-2。

rabbitmqctl -p Vhost-A set_parameter shovel shovel-exchange-1-to-vhost-b /
  '{"src-uri": "amqp://user@/Vhost-A", "src-exchange": "Exchange-1", /
    "src-exchange-key": "#", "dest-uri": "amqp://user@/Vhost-B", /
    "dest-exchange": "Exchange-2", "add-forward-headers": false, /
    "ack-mode": "on-confirm", "delete-after": "never"}'

这具有在目标Exchange-2上复制邮件的副作用。 意思是,我们绑定到Vhost-B上的Exchange-2的测试队列接收到相同的消息三次(一次来自每个群集节点)。

我们如何防止这种情况? 是否需要更改挖土机配置或集群配置?

RabbitMQ版本:3.6.15

更新1:

我们有两个无法删除的互斥队列,因为它们已被锁定。 一旦我们在所有群集节点上禁用了铲子插件,这些队列就会消失。 一旦我们在一个节点上重新激活插件,就会再次创建队列。

似乎是配置错误。 我手动测试了铲子插件,并且必须将铲子配置添加到根('/')虚拟主机。 由于某些原因,这些没有显示在管理控制台中。 使用

rabbitmqctl list_parameters

我在根虚拟主机上看到了两个附加的铲配置。 放下那些铁锹后,相应的队列也被删除。 如问题中所述添加铲子,从而添加了铲子并创建了一个队列。 从那时起,该消息仅转发一次。

谢谢@Olivier暗示了多把铲子。 那句话使我走上了正轨。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM