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