Возможно ли перемещать / объединять сообщения между очередями RabbitMQ?

Я хочу знать, возможно ли перемещать / объединять сообщения из одной очереди в другую. Например:

main-queue содержит сообщения ['cat-1','cat-2','cat-3','cat-4','dog-1','dog-2','cat-5']

dog-queue содержит сообщения ['dog-1, dog-2, dog-3, dog-4]

Итак, вопрос в том, что (предполагая, что обе очереди находятся в одном кластере, vhost), можно переместить сообщения из dog-queue на dog-queue в main-queue с помощью rabbitmqctl ?

Поэтому в конце я хочу получить что-то вроде:

Идеально:

main-queue : ['cat-1','cat-2','cat-3','cat-4','dog-1','dog-2','cat-5', dog-3, dog-4]

Но это тоже нормально:

main-queue : ['cat-1','cat-2','cat-3','cat-4','dog-1','dog-2','cat-5', 'dog-1, dog-2, dog-3, dog-4]

One Solution collect form web for “Возможно ли перемещать / объединять сообщения между очередями RabbitMQ?”

То, что вы ищете, – это плагин «лопатой». Плавающий плагин встроен в ядро, но вы должны явно включить его. Он очень прост в использовании, поскольку он делает все для вас (без ручного потребления / повторной публикации в другой очереди).

Включить плавный плагин через cli:

 sudo rabbitmq-plugins enable rabbitmq_shovel 

Если вы управляете RabbitMQ через GUI, установите плагин mgmt:

 sudo rabbitmq-plugins enable rabbitmq_shovel_management 

Войдите в GUI, и вы увидите «Управление лопатой» в разделе «Администратор». Вы можете создавать лопаты для перемещения сообщений из любой очереди в другую очередь, даже с удаленно размещенными очередями. Вы можете удалить лопату, когда она закончена, или оставить ее там, и она будет постоянно перемещать сообщения по мере их поступления.


Если вы управляете RabbitMQ через CLI, вы можете выполнить лопату прямо с rabbitmqctl:

 sudo rabbitmqctl set_parameter shovel cats-and-dogs \ '{"src-uri": "amqp://user:pass@host/vhost", "src-queue": "dog-queue", \ "dest-uri": "amqp://user:pass@host/vhost", "dest-queue": "main-queue"}' 

Официальные плагины:

Платформа для лопаты – https://www.rabbitmq.com/shovel.html
Создание лопат – https://www.rabbitmq.com/shovel-dynamic.html

  • Стратегия RabbitMQ, Pika и пересоединения
  • очереди на кроличом, заполняемые задачами сельдерея
  • Celery & RabbitMQ работает как контейнеры докеров: Получена незарегистрированная задача типа «...»
  • Соединение AMQP сброшено одноранговым узлом, но сельдерей подключен
  • Проекты Multi Celery с одним и тем же бэкэндовым процессом BrobMMM
  • Как сделать паузу и возобновить потребление изящно в rabbitmq, pika python
  • Как заставить нескольких работников сельдерея выполнять одни и те же задачи?
  • Синхронное и блокирующее потребление в RabbitMQ с использованием pika
  • Python - лучший язык программирования в мире.