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: архитектура и критерии выбора
- RabbitMQ vs Kafka: очереди против лога - Два разных подхода к доставке сообщений - когда брать каждый
Модуль 2 · RabbitMQ
Docker Compose, producer, consumer, DLQ, Outbox
- RabbitMQ в Docker Compose: поднимаем брокер за 2 минуты - Очереди, exchange и routing key на живом RabbitMQ в Compose
- Producer на Go: публикуем события в RabbitMQ - Пишем маленький publisher без лишней магии
- Consumer на Go: воркеры, ack/nack и graceful shutdown - Как не потерять сообщения и не зациклиться
- Idempotency + Dead Letter Queue: защита от дублей и ям - Повторная доставка - норма, надо уметь жить
- Transactional Outbox: событие как часть транзакции - Надёжная публикация без «половинных успехов»
Модуль 3 · Kafka
Docker Compose KRaft, producer, consumer, гарантии, Outbox
- Kafka в Docker Compose: KRaft без ZooKeeper - Запускаем одноузловой Kafka кластер в KRaft-режиме - без ZooKeeper, без лишних зависимостей
- Producer на Go: публикуем события в Kafka (franz-go) - Sync и async отправка, partition key, graceful flush
- Consumer Group на Go: партиции, offset commit - Читаем события из Kafka - воркеры, commit стратегия, graceful shutdown
- Exactly-once в Kafka: idempotent producer и транзакции - At-most-once, at-least-once, exactly-once - на практике с franz-go
- Transactional Outbox с Kafka: событие как часть транзакции - Outbox Poller и CDC через Debezium - два подхода к согласованности
- Мониторинг Kafka: consumer lag, throughput, Prometheus - Метрики producer и consumer, alerting на lag, kafka-ui и CLI
Модуль 4 · Мини-проект
RabbitMQ + Kafka в одном приложении
- Мини-проект: LessonCompleted в RabbitMQ и Kafka - Один event, два брокера - email через RabbitMQ, аналитика через Kafka