Как настроить лопату RabbitMQ?
У меня 2 кластера RabbitMQ в разных датацентрах. В этот момент мне нужно перелопатить один из обменов от одного кролика к другому. Как я могу этого добиться?
2 ответа
Лопата плагин лучше подходит для этой задачи помогает надежно и непрерывно перемещать сообщения между кластерами (или в пределах одного кластера). Этот плагин включен в дистрибутив RabbitMQ и его легко включить (его можно настроить на одном из кластеров):
rabbitmq-plugins enable rabbitmq_shovel
Если вы предпочитаете пользовательский интерфейс, включите подключаемый модуль управления для пользовательского интерфейса управления:
rabbitmq-plugins enable rabbitmq_shovel_management
Следующим шагом является определение самой динамической лопаты (если вы планируете постоянно перемещать сообщения между кластерами, используйте статическую лопату). Декларация лопаты довольно хорошо определена в документации. Учтите, что вам необходимо настроить
src-exchange
и
dest-exchange
вместо
src-queue
и
dest-queue
.
Чтобы дополнить ответ Сергея, вот как я создаю лопату из моего производственного кластера в тестовый кластер.
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
потому что источник - это тематический обмен.
Я не думаю, что есть другой способ проверить поведение, кроме как посмотреть, получает ли целевая биржа то, что вы ожидаете.