Как мне узнать, какой обмен перенаправил сообщение последним? - PullRequest
2 голосов
/ 14 октября 2019

Мы намерены создать одностороннюю сеть привязок обмена к обмену. Наше требование заключается в том, чтобы прикрепить маршрут сообщения к его заголовку, но, похоже, нет никакого способа выяснить, какой обмен обработал сообщение последним.

Я уже пытался найти информацию, используя функцию трассировки, и также существует плагин , который подписывается на внутреннее событие basic.publish. Тем не менее, все эти способы просто дают мне обмен первой записи .

Я даже взглянул на исходный код rabbitmq-server, и кажется, что внутрифункция маршрутизации (см., например, обмен маршрутизацией заголовков ). Я не разработчик Erlang, поэтому, может быть, есть способ Эрланга для перехвата / расширения функций, которые нужно вызвать?

Пример

         +---------+
         |         |
         |   POE   |
         |         |
         +--+--+---+
            |  |
+-------+   |  |    +-------+
|       |   |  |    |       |
|  EX1  +---+  +----+  EX2  |
|       |           |       |
+--+----+           +---+---+
   |                    |
   |                    |
   |                    |
+--+----+           +---+---+
|       |           |       |
|  QU1  |           |  QU2  |
|       |           |       |
+-------+           +-------+

Для сообщения, которое заканчиваетсяв QU2 мы хотели бы иметь поле заголовка вроде этого:

{...
    x-route, ["POE", "EX2"]
}

1 Ответ

1 голос
/ 14 октября 2019

Это, вероятно, может быть выполнено с помощью плагина RabbitMQ, но это будет трудно сделать: перехватчику канала придется эффективно выполнять часть маршрутизации, чтобы определить «последний» обмен. Также может быть несколько «последних» обменов.


ПРИМЕЧАНИЕ: команда RabbitMQ отслеживает список рассылки rabbitmq-users и только иногда отвечает на вопросы по StackOverflow.

...