Data Science и аналитика

Учебник RabbitMQ для начинающих

15 уроков · 5 разделов · бесплатно, без регистрации

RabbitMQ на практике: как связать сервисы через очереди, не потерять сообщения и пережить сбой.

Курс «RabbitMQ: брокер сообщений» состоит из 5 разделов и 15 уроков: Знакомство с RabbitMQ, Модель маршрутизации, Надёжность, Паттерны и Эксплуатация. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Знакомство с RabbitMQ

    1. Зачем нужен брокер сообщений

      Почему прямые HTTP-вызовы между сервисами хрупкие, как брокер сообщений даёт буфер, сглаживание пиков и слабую связанность, и какие задачи ему отдают.

    2. RabbitMQ или Kafka: что выбрать

      Честное сравнение RabbitMQ и Kafka: брокер очередей против лога событий, маршрутизация против реплея, когда какой инструмент реально уместнее.

    3. Установка и первое сообщение

      Поднимаем RabbitMQ в Docker, знакомимся с панелью управления на порту 15672 и отправляем первое сообщение через pika: producer, consumer, ack и разбор кода.

  2. 2 Модель маршрутизации

    1. Exchange, очередь и binding

      Почему продюсер в RabbitMQ публикует в exchange, а не в очередь: binding, routing key, схема потока сообщения и рабочий пример на pika.

    2. Типы exchange: direct, fanout, topic

      Direct, fanout и topic в RabbitMQ: точная маршрутизация, широковещание и шаблоны вида logs.*.error — с примерами на pika и таблицей сравнения.

    3. Routing key и шаблоны

      Как проектировать routing key в RabbitMQ: символы * и # в topic-exchange, схемы именования событий и типичные ошибки маршрутизации.

  3. 3 Надёжность

    1. Подтверждения: ack и nack

      Почему auto_ack тихо теряет сообщения, как работает ручное подтверждение basic_ack, чем nack отличается от reject и что такое poison-loop в RabbitMQ.

    2. Долговечность: durable и persistent

      Durable-очередь переживает рестарт брокера, persistent-сообщение переживает рестарт вместе с ней. Зачем нужны оба флага, при чём тут publisher confirms и чем платим.

    3. Prefetch и честное распределение

      Почему round-robin в RabbitMQ приводит к тому, что один консьюмер захлёбывается, а второй простаивает, и как basic_qos с prefetch_count даёт честную раздачу задач.

  4. 4 Паттерны

    1. Work Queue: очередь задач

      Очередь задач в RabbitMQ: распределение тяжёлой работы между воркерами, prefetch_count, ручные подтверждения и масштабирование добавлением консьюмеров.

    2. Publish/Subscribe: рассылка событий

      Fanout-обменник в RabbitMQ: одно событие получают все подписчики. Свои очереди, queue_bind, пример «заказ создан» и типичные ошибки pub/sub.

    3. RPC через брокер

      Запрос-ответ через RabbitMQ: свойства reply_to и correlation_id, direct reply-to, таймауты. Когда брокерный RPC оправдан и почему обычно лучше HTTP.

  5. 5 Эксплуатация

    1. Dead Letter Queue и повторы

      DLX и DLQ в RabbitMQ: куда девать необработанные сообщения, счётчик попыток, отложенный повтор через очередь-отстойник и защита от бесконечного requeue.

    2. TTL, приоритеты и лимиты очередей

      TTL сообщений и очередей в RabbitMQ, приоритетные очереди x-max-priority, лимиты x-max-length и режимы переполнения drop-head и reject-publish.

    3. Мониторинг и кластеризация

      Ключевые метрики RabbitMQ: глубина очереди, unacked, скорость публикации. Панель управления, алармы, flow control, кластер и quorum queues.