Использование RabbitMQ Shovel для отправки сообщений на свободный узел - PullRequest
0 голосов
/ 07 февраля 2019

Я новичок в rabbitMQ

У меня есть несколько узлов, каждый с производителем и несколькими потребителями.Я стараюсь держать длину очереди очень короткой.Однако я хочу представить механизм, при котором, если очередь достигает определенного порога, мы можем перемещать сообщения на другой узел, если этот узел находится ниже порога.Могу ли я сделать это с помощью лопаты?Может кто-нибудь направить меня в правильном направлении.

В основном я хочу использовать лопату для перемещения сообщений на другой незанятый узел, чтобы потребители на этом узле могли обрабатывать некоторые сообщения.Лопата не заменит потребителей на занятом узле.

**************** РЕДАКТИРОВАТЬ *******************

Я обнаружил, что лопата работает хорошо.Я создал C # программу, которая контролирует очереди на каждом узле.Он использует QueueDeclarePassive (в API RabbitMQ .net).Если у узла очень мало работы, он создает временную динамическую лопату для извлечения работы из другого узла.

Единственная проблема, с которой я сталкиваюсь - это создание цикла.Потому что теперь оригинальный узел завершает свою работу и сгребает свои данные обратно.

Мне нужно предотвратить возникновение этих циклов.Я могу заставить совок добавить заголовок к сообщениям, которые он принял, но я не могу заставить другие узлы совать не принимать данные, если заголовок существует.

Есть идеи?

...