Обмен заголовками RabbitMQ, где X-Match равен любому
Может кто-нибудь объяснить, почему это происходит?
Я создал обмен заголовками и привязал его к трем очередям с разными аргументами:
Затем я пытаюсь опубликовать сообщение, где любая очередь с форматом: pdf получит его, например:
Но обмен, кажется, не может направить его в правильные очереди, поскольку я получаю следующее сообщение:
Поскольку я не могу найти людей с такой же проблемой, как у меня, возможно, я что-то здесь не так делаю
Обратите внимание, что, например, если я отправляю x-match: all, format: pdf и type: report, очередь test-queue-A получает его нормально
2 ответа
Может быть, я неправильно понимаю различные фотографии, которые вы предоставили в своем описании, но основываясь на информации, доступной здесь
Кажется, вы добавляете x-match=any
к заголовкам вашего сообщения, в то время как это ожидается в привязке между вашим обменом и вашей очередью.
Указывает, как работает привязка:
Любой общий заголовок между сообщением и счетчиком привязок в качестве совпадения,
Или все заголовки, указанные в привязке, должны присутствовать в сообщении для соответствия.
Спасибо, Оливье, за ссылку, которой вы поделились, она помогла гораздо лучше понять обмен заголовками. Я знаю, что этот вопрос был задан 5 лет назад и на него ответил @Olivier. Но, тем не менее, по прошествии 5 лет не так уж много ресурсов, чтобы понять, как создать обмен типа заголовка, что довольно сложно, когда другие типы обмена (прямой и тематический) немного легко создать и связать очереди, поскольку они используют ключ маршрутизации. концепция, и ответвление не требует ни ключа маршрутизации, ни заголовков.
Чтобы создать обмен типами заголовков, выполните шаги, которые я выполнил.
- Войдите в свой пользовательский интерфейс управления RabbitMQ.
- Сначала создайте несколько очередей на вкладке «Очереди».
- Создайте обмен на вкладке «Обмены» , указав какое-либо имя в поле «Имя», выбрав « Тип» в качестве заголовков в раскрывающемся списке и нажав «Добавить обмен».
- Нажмите на созданную биржу из списка бирж.
- нажмите на гармошку креплений .
- Введите имя очереди в текстовое поле рядом с раскрывающимся списком «В очередь ».
- В аргументах введите ключ x-match и значение Any/all .
- Добавьте все остальные аргументы в соответствии с вашими требованиями.
- Нажмите «Привязать».
- Сделайте то же самое для других очередей, которые вы хотите привязать к этому обмену.
В конечном итоге привязки будут выглядеть так
Привязка очереди для соответствия всем
Надеюсь, это будет полезно. Спасибо. Кстати, это мой первый пост в Stack Overflow!