Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про RabbitMQ: exchange, routing

Какие типы exchange существуют в RabbitMQ?

Вопрос проверяет понимание маршрутизации сообщений в RabbitMQ и типов exchange.

Короткий ответ

В RabbitMQ основные типы exchange: direct, fanout, topic и headers. Они отличаются правилами маршрутизации сообщений в очереди. direct сопоставляет routing key, fanout рассылает всем, topic использует шаблоны, а headers — значения заголовков. Выбор зависит от схемы маршрутизации.

Длинный ответ

Что такое exchange

Exchange — это компонент RabbitMQ, который принимает сообщение от продюсера и решает, в какие очереди его отправить.

Exchange не хранит сообщения, он только маршрутизирует их.

Основные типы exchange

  1. Direct exchange

Маршрутизация происходит по точному совпадению routing key.

Пример:

  • сообщение с ключом order.created

  • очередь привязана к order.created

  • сообщение попадёт в очередь

  1. Fanout exchange

Сообщение отправляется во все связанные очереди независимо от ключа.

Используется, когда:

  • нужно рассылать события всем подписчикам

  • реализуется broadcast

  1. Topic exchange

Routing key сопоставляется с шаблоном.

Пример шаблонов:

  • order.*

  • user.#

Это позволяет строить гибкую маршрутизацию.

  1. Headers exchange

Маршрутизация выполняется по заголовкам сообщения, а не по routing key.

Используется реже, когда логика маршрутизации сложнее и основана на метаданных.

Пример схемы работы

Типичный поток:

  1. Producer отправляет сообщение

  2. Exchange принимает сообщение

  3. Exchange анализирует правила

  4. Сообщение отправляется в одну или несколько очередей

Когда какой тип использовать

На практике чаще всего:

  • direct — для простых сервисов

  • topic — для событийных систем

  • fanout — для широковещательных уведомлений

Headers применяется значительно реже.

Вывод

Тип exchange определяет логику маршрутизации сообщений. В большинстве production-систем основная нагрузка ложится на direct и topic, так как они дают баланс простоты и гибкости.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • RabbitMQ

    RabbitMQ

Ключевые слова

#exchange

#routing

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.