Как гарантировать доставку/обработку сообщения после того, как consumer его прочитал?

Подтверждайте сообщение или фиксируйте offset только после устойчивой записи результата. Повторная доставка должна быть безопасной благодаря идемпотентности или дедупликации.

Короткий ответ

Что ответить на собеседовании

Подтверждайте сообщение или фиксируйте offset только после устойчивой записи результата. Повторная доставка должна быть безопасной благодаря идемпотентности или дедупликации.

Подробный разбор

Ответ с пояснениями

Подтверждайте сообщение или фиксируйте offset только после устойчивой записи результата. Повторная доставка должна быть безопасной благодаря идемпотентности или дедупликации.

Сам факт чтения из брокера не доказывает успешную обработку. Сохраните бизнес-изменения и ID обработанного события в одной транзакции БД, затем подтвердите сообщение. После сбоя повтор увидит уже записанный ID и не выполнит действие второй раз.

Для Kafka не фиксируйте offset дальше ещё не завершённого сообщения той же партиции при параллельной обработке. Неисправимые сообщения направляйте в управляемый разбор с мониторингом, а не бесконечный retry. Для внешнего необратимого действия отдельно нужен идемпотентный контракт с получателем.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее