Как настроить двунаправленную лопату RabbitMQ и избежать бесконечного цикла? - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть 2 кластера RabbitMQ в отдельных центрах обработки данных. В данный момент мы перекладываем один обмен с одного кролика на другого, но теперь нам нужно перелопатить и в другом направлении. Как мы можем достичь этого, не вызывая бесконечный цикл?

Коллега решил, что мы можем поставить галочку напротив опции «Добавить заголовки пересылки», а затем отфильтровать с помощью обмена заголовками. Однако добавленные заголовки выглядят как вложенные, и я не нашел способа сопоставить заголовки?

1 Ответ

0 голосов
/ 28 апреля 2018

Кажется, на основании дополнительного описания, которое вы предоставили, что:

  • Вы используете лопату между биржами
  • Гадание, что тип обмена - разветвление

Я вижу два подхода к тому, что вы пытаетесь сделать:

  • Используйте федерация и настройте его в обоих направлениях между обменами в каждом кластере
  • Все еще используйте лопату, но определяйте новую очередь на каждом обмене и настраивайте очередь для очереди лопата

Для варианта лопаты: У вас есть обмен A на кластере 1, обмен A на кластере 2, ваш main_queue на каждом кластере

  • Создать вторичную очередь в каждом кластере, привязанную к обмену А.
  • Создание лопаты из вторичной очереди в кластере 1 в main_queue в кластере 2
  • Создание лопаты из вторичной очереди в кластере 2 в main_queue в кластере 1

Преимущество федерации: проще, даже если у вас настроена сложная маршрутизация

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

...