К содержимому
Перейти к содержимому

Тренажёры · RabbitMQ UI

Тренажёр RabbitMQ без Docker и установки

Создашь очередь и exchange, найдёшь сервис, который забыл ack, и уведёшь битый заказ в dead letter очередь. 8 заданий в Management UI, около 15 минут

Вход по ссылке на почту, без пароля. Без входа тренажёр работает на этой странице

Страница очереди orders в RabbitMQ Management UI: Ready вырос до 146, Unacked стоит на 10. Деметра спрашивает, что забыл Billing Service

Зачем

RabbitMQ есть в вакансии, а руками ты его не трогал

  • «В вакансии RabbitMQ, а exchange и binding для меня пока просто слова»

    Ты заведёшь их сам и увидишь, почему заказ с ключом, под который нет binding, пропадает без следа

  • «Поднимать RabbitMQ в Docker ради пары опытов долго»

    Тренажёр открывается в браузере. Брокер внутри — модель RabbitMQ, ломать её можно сколько угодно и начать заново одной кнопкой

  • «С Kafka разобрался, а чем от неё отличается очередь, объяснить не могу»

    На третьем шаге ты подтвердишь заказ через ack и проверишь, что в очереди его больше нет. В Kafka прочитанное остаётся в логе

Программа

RabbitMQ для начинающих: 8 шагов от очереди до DLX

Один интернет-магазин, exchange заказов и два сервиса, которые их читают. Каждый шаг — то, что на работе делают в Management UI

Основной трек · 8 шагов · около 15 минут

  1. Очередь

    Создашь очередь заказов, в которую магазин кладёт заказ и не ждёт биллинг

  2. Публикация

    Положишь заказ в очередь прямо из Management UI и увидишь, как вырос Ready

  3. Ack

    Достанешь заказ дважды и проверишь, что после ack его в очереди больше нет

  4. Exchange и binding

    Переведёшь магазин на exchange типа direct и узнаешь, куда пропадает заказ с чужим ключом

  5. Очередь без читателя

    Заведёшь аналитике свою очередь и по графику увидишь, как копятся заказы, пока сервис выключен

  6. Unacked

    Запустишь сервис без ack и найдёшь заказы, которые он взял и не подтвердил

  7. Битый заказ

    Отправишь битый заказ и по графикам поймёшь, почему requeue крутит его по кругу

  8. Dead letter exchange

    Через policy уведёшь отклонённый заказ в очередь DLQ и прочитаешь заголовок x-death

Экзамен · 4 поломки

После основного трека. Без подсказок и Деметры, с секундомером

  • Складу нужны заказыОтдать складу копию каждого заказа, не трогая магазин
  • Аналитика ничего не получаетСервис запущен, магазин работает, а заказы не доходят. Найти, где порвался путь
  • Счета не выставляютсяЗаказы копятся, хотя сервис запущен. Разобраться по графикам очереди
  • Откуда заказ в DLQСервис ничего не отклонял, а заказ в DLQ. Узнать причину, не потеряв его

Как устроен RabbitMQ

RabbitMQ для начинающих: куда уходит заказ

Схема магазина, с которым ты работаешь в тренажёре. Её же Деметра открывает, когда очередь копит заказы и когда битый заказ уходит в DLQ

Shop Service публикует заказ в exchange shop типа direct. По ключу order.created заказ получают очереди orders и analytics, по ключу order.failed отклонённый заказ попадает в orders.dlq, а сообщение с ключом без binding пропадает
  1. Магазин публикует в exchange

    Shop Service отдаёт заказ в shop с ключом order.created и не знает, какие очереди его ждут

  2. Binding решает, куда класть

    Два binding с одним ключом — и у orders, и у analytics своя копия заказа

  3. Очередь копит, пока не заберут

    Выключил Analytics Service — его заказы ждут в очереди, Ready на графике растёт

  4. После ack сообщения нет

    Billing подтвердил заказ, и очередь его забыла. В Kafka прочитанное остаётся в логе

  5. Битый заказ уходит в DLX

    Policy пересылает отклонённый заказ в orders.dlq. Поток идёт дальше, заказ не потерян

Попробуй

Запусти тренажёр RabbitMQ UI на этой странице

Тот же тренажёр, что в разделе «Тренажёр» платформы. Без входа, прогресс останется в этом браузере

Тренажёр · RabbitMQ UI

RabbitMQ за 15 минут

  • Создашь очередь, exchange и binding и увидишь, куда уходит сообщение
  • По графикам Ready и Unacked найдёшь сервис, который упал или забыл ack
  • Уведёшь битый заказ в dead letter очередь через policy

Management UI рассчитан на широкий экран: таблицы очередей и формы не помещаются в узкое окно. Открой страницу на компьютере и разверни окно браузера

Без входа и установки. Прогресс сохраняется в этом браузере

Как работает

Как пользоваться RabbitMQ Management, если открываешь его впервые

  1. Деметра ставит задачу

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

  2. Ты решаешь её в Management UI

    Вкладки Exchanges, Queues and Streams и Admin, формы свёрнуты, как в настоящем RabbitMQ. Нагрузку даёт Эмулятор: магазин шлёт заказы, а Billing и Analytics Service ты включаешь сам

  3. Застрял — бери подсказку

    Подсказки идут по ступеням: где искать, что сделать, в конце кольцо вокруг нужной кнопки и «Покажи как»

  4. Шаг засчитывается по факту

    Тренажёр смотрит на состояние брокера: очередь создана, binding на месте, заказ лежит в DLQ. После шага — вывод одной строкой

Сравнение

Чем RabbitMQ отличается от Kafka

Оба брокера возят сообщения между сервисами, но устроены по-разному. Прошёл тренажёр Kafka — вот что в RabbitMQ будет иначе

Куда пишет отправительRabbitMQ · В exchange с ключом. В какие очереди лечь сообщению, решают bindingKafka · В топик. Партицию выбирает ключ сообщения, а без ключа продюсер раскладывает сам
Что после чтенияRabbitMQ · Получатель шлёт ack, и сообщение удаляется из очередиKafka · Сообщение остаётся в логе, группа консьюмеров только двигает офсет
Два сервиса читают одноRabbitMQ · У каждого своя очередь, exchange кладёт в каждую копиюKafka · У каждого своя группа консьюмеров, и каждая читает весь топик
Перечитать зановоRabbitMQ · Из обычной очереди нельзя: подтверждённого сообщения больше нет. Для повторного чтения в RabbitMQ есть StreamsKafka · Перемотать офсет группы на начало
Битое сообщениеRabbitMQ · Отклонить без requeue, и policy уведёт его в dead letter очередьKafka · Сервис сам перекладывает его в отдельный топик DLQ

Вопросы

Что спрашивают про тренажёр RabbitMQ

Нужно ли ставить RabbitMQ или Docker?
Нет. Тренажёр работает в браузере: RabbitMQ внутри него — модель на JavaScript с exchange, очередями, binding, policy и ack. Сервер и установка не нужны
Это настоящий RabbitMQ Management UI?
Это копия ключевых экранов RabbitMQ Management UI 4.3: Overview, Exchanges, Queues and Streams, Admin с policy, графики Queued messages и Message rates. Вёрстку и поведение сверяли с живым RabbitMQ, тексты ошибок повторяют живой RabbitMQ. Под интерфейсом модель, а не настоящий брокер, поэтому ломать её можно без последствий
Подойдёт, если я никогда не работал с RabbitMQ?
Да. Первый шаг — создать очередь, и перед ним Деметра объясняет, зачем сервисам брокер. Дальше каждое понятие появляется тогда, когда без него задача не решается
Сколько времени займёт?
Основной трек — 8 шагов, около 15 минут. После него можно сдать экзамен из 4 поломок без подсказок. Продвинутого трека, как у тренажёра Kafka, у этого тренажёра нет
Что такое exchange и binding простыми словами?
Exchange — точка, куда отправитель кладёт сообщение с ключом. Binding — правило «сообщения с этим ключом клади в эту очередь». Нет подходящего binding — сообщение никуда не попадёт, и в тренажёре ты это увидишь сам
Можно пройти с телефона?
Нет. Management UI рассчитан на большой экран: таблицы очередей и формы не помещаются в телефон. Открой страницу с компьютера или ноутбука
Сохранится ли прогресс?
Да, в этом браузере. Закрыл вкладку — в следующий раз продолжишь с того же шага. Начать заново можно со стартового экрана
Какие темы для собеседования есть в тренажёре?
Чем очередь отличается от лога Kafka, как exchange типа direct выбирает очередь по ключу, что значат Ready и Unacked, что будет с сообщением без ack, почему requeue крутит битое сообщение по кругу и как dead letter exchange с policy это чинит

Пройди путь заказа через RabbitMQ руками до собеседования

8 заданий в Management UI, около 15 минут. Потом экзамен без подсказок