Как пошагово сделать идемпотентное приложение при обработке сообщений из Kafka?

Определите стабильный event_id, заведите inbox с уникальным ключом и сохраняйте факт обработки вместе с бизнес-изменением в одной транзакции. Kafka offset подтверждайте после успешного commit.

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

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

Определите стабильный event_id, заведите inbox с уникальным ключом и сохраняйте факт обработки вместе с бизнес-изменением в одной транзакции. Kafka offset подтверждайте после успешного commit.

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

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

Определите стабильный event_id, заведите inbox с уникальным ключом и сохраняйте факт обработки вместе с бизнес-изменением в одной транзакции. Kafka offset подтверждайте после успешного commit.

Повторное событие распознаётся по уникальному ключу и не создаёт эффект снова. Для нескольких независимых обработчиков ключ включает идентификатор обработчика. Ошибка до commit позволяет безопасно повторить попытку; сбой после commit, но до offset приведёт к дублю доставки без дубля эффекта. Внешние вызовы требуют своего idempotency key или outbox и сверки.

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

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

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

Подробнее