У нас есть кластер RabbitMQ с тремя настроенными узлами.Каждый узел имеет два виртуальных хоста (Vhost-A и Vhost-B).Нам нужна возможность перемещать сообщения из Vhost-A в Vhost-B.Для этого мы настроили лопату, направляющую сообщения от Exchange-1 на Vhost-A к Exchange-2 на Vhost-B.
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.Это означает, что тестовая очередь, которую мы привязали к Exchange-2 на Vhost-B, получает одно и то же сообщение три раза (по одному от каждого узла кластера).
Как мы можем предотвратить это?Требуется ли изменение конфигурации лопатки или конфигурации кластера?
Версия RabbitMQ: 3.6.15
ОБНОВЛЕНИЕ 1:
У нас есть две исключительные очереди, которые не могут бытьудалены, потому что они заблокированы.Эти очереди исчезают, когда мы отключаем плагин на всех узлах кластера.Как только мы повторно активируем плагин на одном узле, очереди создаются снова.