Обмен заголовками RabbitMQ, где X-Match равен любому

Может кто-нибудь объяснить, почему это происходит?

Я создал обмен заголовками и привязал его к трем очередям с разными аргументами:

Затем я пытаюсь опубликовать сообщение, где любая очередь с форматом: pdf получит его, например:

Но обмен, кажется, не может направить его в правильные очереди, поскольку я получаю следующее сообщение:

Поскольку я не могу найти людей с такой же проблемой, как у меня, возможно, я что-то здесь не так делаю

Обратите внимание, что, например, если я отправляю x-match: all, format: pdf и type: report, очередь test-queue-A получает его нормально

2 ответа

Решение

Может быть, я неправильно понимаю различные фотографии, которые вы предоставили в своем описании, но основываясь на информации, доступной здесь

Кажется, вы добавляете x-match=any к заголовкам вашего сообщения, в то время как это ожидается в привязке между вашим обменом и вашей очередью.

Указывает, как работает привязка:

Любой общий заголовок между сообщением и счетчиком привязок в качестве совпадения,

Или все заголовки, указанные в привязке, должны присутствовать в сообщении для соответствия.

Спасибо, Оливье, за ссылку, которой вы поделились, она помогла гораздо лучше понять обмен заголовками. Я знаю, что этот вопрос был задан 5 лет назад и на него ответил @Olivier. Но, тем не менее, по прошествии 5 лет не так уж много ресурсов, чтобы понять, как создать обмен типа заголовка, что довольно сложно, когда другие типы обмена (прямой и тематический) немного легко создать и связать очереди, поскольку они используют ключ маршрутизации. концепция, и ответвление не требует ни ключа маршрутизации, ни заголовков.

Чтобы создать обмен типами заголовков, выполните шаги, которые я выполнил.

  1. Войдите в свой пользовательский интерфейс управления RabbitMQ.
  2. Сначала создайте несколько очередей на вкладке «Очереди».
  3. Создайте обмен на вкладке «Обмены» , указав какое-либо имя в поле «Имя», выбрав « Тип» в качестве заголовков в раскрывающемся списке и нажав «Добавить обмен».
  4. Нажмите на созданную биржу из списка бирж.
  5. нажмите на гармошку креплений .
  6. Введите имя очереди в текстовое поле рядом с раскрывающимся списком «В очередь ».
  7. В аргументах введите ключ x-match и значение Any/all .
  8. Добавьте все остальные аргументы в соответствии с вашими требованиями.
  9. Нажмите «Привязать».
  10. Сделайте то же самое для других очередей, которые вы хотите привязать к этому обмену.

В конечном итоге привязки будут выглядеть так

Привязка очереди для соответствия всем

После привязки очереди

Надеюсь, это будет полезно. Спасибо. Кстати, это мой первый пост в Stack Overflow!

Другие вопросы по тегам