В RabbitMQ виртуальный хост — это логическая область (namespace), в которой существуют свои очереди, обменники, биндинги и права доступа. 👉 Правильное использование: Канал — это легковесное соединение внутри TCP-сессии с брокером. 👉 Правильное использование: Обменник — это сущность, через которую сообщения попадают в очередь. 👉 Правильное использование:
В RabbitMQ виртуальный хост — это логическая область (namespace), в которой существуют свои очереди, обменники, биндинги и права доступа. 👉 Правильное использование: Канал — это легковесное соединение внутри TCP-сессии с брокером. 👉 Правильное использование: Обменник — это сущность, через которую сообщения попадают в очередь. 👉 Правильное использование:
...Читать далее
1. Виртуальные хосты (Virtual Hosts, vHosts)
В RabbitMQ виртуальный хост — это логическая область (namespace), в которой существуют свои очереди, обменники, биндинги и права доступа.
- Аналогично базе данных в СУБД внутри одного сервера.
- Используются для изоляции приложений или окружений. Например:prod → используется в боевом окружении,
test → окружение для тестов,
dev → окружение для разработчиков.
👉 Правильное использование:
- Создавайте отдельные vHost для разных приложений или крупных подсистем, чтобы их очереди и обменники не пересекались.
- Управляйте доступами — пользователю можно дать право работать только в нужном vHost.
2. Каналы (Channels)
Канал — это легковесное соединение внутри TCP-сессии с брокером.
- Работать напрямую через TCP-соединение неэффективно, поэтому поверх одного соединения открывается множество каналов.
- Канал используется для отправки и получения сообщений, управления очередями и обменниками.
- Каждый канал независим, у него может быть своя consumer-сессия, транзакция или QoS-настройки.
👉 Правильное использование:
- Обычно открывают один канал на поток (thread).
- Не открывайте «миллионы каналов» — это неэффективно.
- Закрывайте каналы, если они больше не нужны.
3. Обменники (Exchanges)
Обменник — это сущность, через которую сообщения попадают в очередь.
- Продюсер посылает сообщение в обменник, а не напрямую в очередь.
- Обменник по правилам маршрутизации (bindings) определяет, в какую очередь (или несколько) пойдёт сообщение.
Типы обменников:
- direct — маршрутизация по ключу точного совпадения.
- fanout — широковещательная рассылка во все привязанные очереди.
- topic — маршрутизация по шаблонам (order.*, *.created).
- headers — маршрутизация по заголовкам сообщения.
👉 Правильное использование:
- Выбирайте тип в зависимости от бизнес-логики:direct → для чёткой связи продюсер ↔ очередь,
fanout → для рассылки широким подписчикам,
topic → удобен для более гибкой маршрутизации по паттернам,
headers → редко используется, но полезен для сложных условий. - Не шлите сообщения сразу в очередь напрямую (через default exchange), это усложнит масштабирование. Всегда используйте свои обменники.
📌 Итог: как правильно использовать
- Создавайте vHost для изоляции приложений или окружений.
- Используйте каналы вместо лишних TCP-соединений, чаще всего — один канал на поток.
- Работайте через обменники, чтобы гибко управлять маршрутизацией сообщений.