Вопрос с собеседования · Брокеры сообщений

Как в RabbitMQ сообщение попадает от издателя в очередь?

JuniorRabbitMQ и SQSRabbitMQ
Ещё спрашивают так:
  • Как RabbitMQ доставляет сообщения?
Коротко

Издатель публикует в exchange, привязки (bindings) по routing key решают, в какие очереди попадут копии, потребители читают очереди и подтверждают.

  • Exchange не хранит сообщения
  • Типы: direct, topic, fanout, headers
  • Без подходящей привязки сообщение отбрасывается

А ещё Default exchange кладёт прямо в очередь с именем ключа

Подробно

Такая развязка позволяет менять маршрутизацию, не трогая издателя: достаточно изменить привязки. Тип обменника задаёт правило — direct сопоставляет ключ маршрутизации точно, topic допускает шаблоны, fanout рассылает во все привязанные очереди. Это принципиальное отличие от Kafka, где маршрутизации нет вовсе: потребитель сам выбирает топик и позицию чтения.

Что хотят услышать

  • Путь сообщения: exchange → binding → queue.
  • Типы exchange.

Частые ошибки

  • Считать, что публикация идёт прямо в очередь.
  • Переносить модель Kafka на RabbitMQ и наоборот.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Издатель всегда пишет напрямую в очередь по её имени
  • ✓Через exchange, который по привязкам выбирает очередь
  • ✗Очередь сама забирает сообщения у издателя по расписанию
  • ✗Сообщение сразу попадает во все очереди брокера

Что спросят дальше

  • Чем direct-обменник отличается от topic?
  • Что произойдёт с сообщением, если ни одна привязка не подошла?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования