Message Brokers

RabbitMQ и Kafka на практике: от Docker Compose до Outbox и мониторинга

Уровень: Средний · около 7 ч · после курса: Поднимешь RabbitMQ и Kafka, напишешь producer и consumer, сделаешь retry, DLQ и outbox

Чему научишься

  • Выбрать между RabbitMQ и Kafka для конкретной задачи
  • Поднять оба брокера локально через Docker Compose
  • Написать producer и consumer для RabbitMQ и Kafka на Go
  • Реализовать Outbox паттерн с Poller и Debezium CDC
  • Настроить мониторинг consumer lag через Prometheus

Уроки курса (13)

Модуль 1 · Выбор брокера

RabbitMQ vs Kafka: архитектура и критерии выбора

  1. RabbitMQ vs Kafka: очереди против лога - Два разных подхода к доставке сообщений - когда брать каждый

Модуль 2 · RabbitMQ

Docker Compose, producer, consumer, DLQ, Outbox

  1. RabbitMQ в Docker Compose: поднимаем брокер за 2 минуты - Очереди, exchange и routing key на живом RabbitMQ в Compose
  2. Producer на Go: публикуем события в RabbitMQ - Пишем маленький publisher без лишней магии
  3. Consumer на Go: воркеры, ack/nack и graceful shutdown - Как не потерять сообщения и не зациклиться
  4. Idempotency + Dead Letter Queue: защита от дублей и ям - Повторная доставка - норма, надо уметь жить
  5. Transactional Outbox: событие как часть транзакции - Надёжная публикация без «половинных успехов»

Модуль 3 · Kafka

Docker Compose KRaft, producer, consumer, гарантии, Outbox

  1. Kafka в Docker Compose: KRaft без ZooKeeper - Запускаем одноузловой Kafka кластер в KRaft-режиме - без ZooKeeper, без лишних зависимостей
  2. Producer на Go: публикуем события в Kafka (franz-go) - Sync и async отправка, partition key, graceful flush
  3. Consumer Group на Go: партиции, offset commit - Читаем события из Kafka - воркеры, commit стратегия, graceful shutdown
  4. Exactly-once в Kafka: idempotent producer и транзакции - At-most-once, at-least-once, exactly-once - на практике с franz-go
  5. Transactional Outbox с Kafka: событие как часть транзакции - Outbox Poller и CDC через Debezium - два подхода к согласованности
  6. Мониторинг Kafka: consumer lag, throughput, Prometheus - Метрики producer и consumer, alerting на lag, kafka-ui и CLI

Модуль 4 · Мини-проект

RabbitMQ + Kafka в одном приложении

  1. Мини-проект: LessonCompleted в RabbitMQ и Kafka - Один event, два брокера - email через RabbitMQ, аналитика через Kafka