open atlas
↑ К треку
Очереди, потоки, события QUE · 03 · 07

RabbitMQ exchanges: тест с выбором ответа

Тест с выбором на синтез по всему юниту — маршрутизация direct/fanout/topic/headers, binding key, smart-broker push, prefetch и сбои dead-letter.

QUE Senior ◷ 12 min
Уровень
ОсновыJuniorMiddleSenior

Шесть вопросов поперёк всего юнита. Каждый отражает решение по топологии, которое ты принимаешь на реальном ревью дизайна — не определение для заучивания, а компромисс маршрутизации, который надо взвесить под production-нагрузкой.

Цель

Убедись, что связываешь тип exchange, binding key, smart-broker push-модель и production-сбои — тот синтез, к которому вёл урок.

Викторина

Надо доставлять события заказов трём сервисам сегодня, ожидаешь новых позже, и один сервис интересуют только EU-заказы. Какой тип exchange подходит и почему?

Викторина

Queue нового consumer'а ничего не получает — ни ошибок, ни исключений, а вызовы publish продюсера возвращают успех. Самая вероятная причина?

Викторина

Topic-binding использует ключ order.*.eu. Какой routing key совпадёт?

Викторина

Коллега говорит, что RabbitMQ и Kafka — взаимозаменяемые очереди, поэтому поздно подключившийся consumer может воспроизвести события за неделю из любой. Где ошибка?

Викторина

Один consumer держит огромный бэклог неподтверждённых сообщений, пока быстрые consumer'ы простаивают, а память брокера ползёт к high-watermark. Что неверно настроено и какой фикс?

Викторина

Consumer делает nack-with-requeue на некорректном payload, который никогда не сможет обработать, и один worker теперь застрял, бесконечно переполучая то же сообщение. Какой устойчивый фикс?

Итог

Сквозная линия — одно дерево решений маршрутизации: тип exchange это алгоритм (direct — точное совпадение, fanout — рассылка, topic — точечный паттерн с * и #, headers — матч атрибутов), binding плюс routing key решают, какие queue получат независимую копию, а smart-broker push-модель означает, что подтверждённое сообщение удаляется — никакого replay, в отличие от Kafka. Production-сбои на слой ниже: непривязанный exchange тихо отбрасывает без флага mandatory, слишком высокий prefetch голодает быстрых consumer’ов и растит неподтверждённую память, а poison message без dead-letter exchange зацикливается навсегда. Теперь, когда будешь ревьюить RabbitMQ-дизайн, первые три вопроса — какой тип exchange, верны ли binding’и и есть ли dead-letter маршрут — всё ниже зависит от этих трёх.

Что-то непонятно?

Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.

хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources1
expand
  1. 01

Trademarks belong to their respective owners. Editorial reference only.