суббота, 9 февраля 2019 г.

Миграция сообщений в очередях RabbitMQ с помощью Shovel

У RabbitMQ существует возможность миграции сообщений между очередями, как в пределах одной ноды, так и между различными нодами.
Для этого можно использовать плагин Shovel (вообще кроме Shovel полезно будет знать про федерацию и кластеризацию в RabbitMQ, в некоторых кейсах можно использовать и их).

Установка плагина Shovel:
rabbitmq-plugins enable rabbitmq_shovel rabbitmq_shovel_management

Пример использования Shovel для миграции очереди celery с ноды node1 на node2:
rabbitmqctl set_parameter shovel celery-migration \
'{"src-uri": "amqp://node1user:node1password@node1ip/node1vhost", "src-queue": "celery", "dest-uri": "amqp://node2user:node2password@node2ip/node2vhost", "dest-queue": "celery"}'

Для того чтобы node1 могла подключиться к node2, на второй должен быть открыть порт 5672.
Помимо использования CLI можно и использовать веб-интерфейс, пример можно посмотреть тут.

Комментариев нет: