Message Brokers
RabbitMQ и Kafka на практике: от Docker Compose до Outbox и мониторинга
Уроки курса (13)
- RabbitMQ vs Kafka: очереди против лога — Два разных подхода к доставке сообщений - когда брать каждый
- RabbitMQ в Docker Compose: поднимаем брокер за 2 минуты — Очереди, exchange, routing key - на пальцах
- Producer на Go: публикуем события в RabbitMQ — Пишем маленький publisher без лишней магии
- Consumer на Go: воркеры, ack/nack и graceful shutdown — Как не потерять сообщения и не зациклиться
- Idempotency + Dead Letter Queue: защита от дублей и ям — Повторная доставка - норма, надо уметь жить
- Transactional 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
- Мини-проект: LessonCompleted в RabbitMQ и Kafka — Один event, два брокера - email через RabbitMQ, аналитика через Kafka