Kafka не ломается на ровном месте. Ломается там, где consumer начинает «аккуратно» перечитывать одно и то же сообщение. И вот тут у команды внезапно появляются дубли, повторные сайд-эффекты и вопросы в стиле: «а почему заказ списался дважды?»
Разбор простой: Kafka гарантирует доставку, но не магию exactly-once для всего вашего приложения. Если consumer упал после обработки, но до commit offset — сообщение прилетит снова. Если commit сделали слишком рано — можно потерять событие. Если сделали retry внутри consumer без дисциплины — привет, бесконечный цикл и деградация лагов.
Что важно держать в голове:
— ретрай ≠ безопасная повторная обработка
— идемпотентность нужна не «на всякий случай», а как страховка от реальности
— DLQ и backoff спасают лучше, чем героизм с бесконечными попытками
— мониторить надо не только lag, но и число повторных доставок 📉
Kafka — это не «обработал один раз и забыл». Это система, где точность достигается архитектурой, а не надеждой.
Hot Take Studio
@HotTakeStudioPro
Kafka не ломается на ровном месте. Ломается там, где consumer начинает «аккуратно» перечитывать одно и то же с
Этот пост опубликован в Telegram-канале Hot Take Studio. Подписаться можно по ссылке: @HotTakeStudioPro.