TGViewer
Валерий | AQA Engineer | Автотестирование на Python | REST, gRPC, GraphQL Валерий | AQA Engineer | Автотестирование на Python | REST, gRPC, GraphQL @aqa_engineer · 1.52K subscribers
Post #379 931
Привет!
Дошло время поговорить про типы обменников (Exchange) в RabbitMQ 🐰

Зачем вообще это нужно знать?

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

Cначала надо рассказать про такое понятие как Routing Key.
В RabbitMQ - это строка, которая используется для маршрутизации сообщений от обменника (exchange) к очередям (queues) на основе правил, заданных типом обменника и настройками binding.

Простыми словами:
- Это как "адрес" или "тег" сообщения, который помогает обменнику решить, в какую очередь его отправить.
- Работает в связке с binding (привязкой очереди к обменнику), где указывается, какие routing key очередь принимает.

Теперь можно и про обменики.

1. Fanout
Публикует сообщения во все очереди, которые связаны с этим обменником через binding.
Игнорирует любые настройки binding (routing key или заголовки).
Все очереди получат одно и то же сообщение — никаких фильтров.

2. Direct
Публикует сообщения только в те очереди, у которых routing key в binding полностью совпадает с routing key сообщения.
То есть тут уже появляются строгие правила фильтрации.

3. Topic
Похож на Direct, но поддерживает wildcard’ы * и # в routing key.

Примеры:
• # — означает «все сообщения», фактически как в Fanout.
• *.created — сообщения, где routing key заканчивается на .created.

Это что-то типа простых регулярных выражений для фильтрации сообщений.

4. Headers
Тут вообще не используется routing key.
Роутинг идёт по заголовкам сообщений и правилам в binding.

В binding настраиваются:
• ожидаемые заголовки
• параметр x-match:
• x-match=any — хотя бы один заголовок должен совпасть
• x-match=all — должны совпасть все заголовки


В общем, это важно:
- чтобы настроить себе тестовую очередь и не своровать сообщения у прода
- или если просто хотите «послушать» сообщения из какого-нибудь топика

——————————-

📱 TG-сообщество

📱 Обучение

📱 Отзывы
  • ❤ 1
More from @aqa_engineer
  1. Sep 2, 2026💙💙💙💙💙 Маленькое напоминание о большой дате: где стоит провести День программиста⬆️ Ар…
  2. Sep 2, 2026Привет, давно меня не было пригар по работе, что совсем не успеваю ничего. За что прошу пр…
  3. Jul 16, 2026👩‍💻 В мае-июне я проходила курс «Автоматизация тестирования Rest API Advanced (Python)»…
  4. Jun 10, 2026Привет! Уже на следующей неделе у меня стартуют. Автоматизация тестирования брокеров сообщ…
  5. Jun 8, 2026Несколько месяцев назад я спросил, какой технический тренинг вам был бы действительно инте…
  6. Jun 6, 2026Материалы для тех, кто в теме. Одна из самых больших проблем при развитии в IT - это возмо…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →