【问题标题】:RabbitMQ Shovel plugin in a cluster集群中的 RabbitMQ Shovel 插件
【发布时间】:2019-02-05 07:49:34
【问题描述】:

我们有一个配置了三个节点的 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:

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

【问题讨论】:

  • 嗨@froeschli,根据您的描述,听起来您配置了 3 个铲子,同时进行了集群设置。您能否确认对您的设置的这种解释?
  • 我在一个节点上发出了配置命令,另外两个镜像了那个铲子。我注意到我在每个节点上都有三个具有相同绑定的队列,它们是自动创建的。

标签: rabbitmq rabbitmqctl rabbitmq-shovel


【解决方案1】:

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

rabbitmqctl list_parameters

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

感谢@Olivier 暗示了多个铲子。那条评论让我走上了正轨。

【讨论】:

    猜你喜欢
    • 2012-07-11
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多