Опишите паттерн Idempotent Consumer. Как гарантировать корректность данных, если одно и то же событие пришло в систему параллельно?

Idempotent Consumer делает повторную обработку события безопасной. Для параллельных копий недостаточно сначала проверить наличие ID: уникальная отметка обработки и бизнес-изменение должны быть атомарны.

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

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

Idempotent Consumer делает повторную обработку события безопасной. Для параллельных копий недостаточно сначала проверить наличие ID: уникальная отметка обработки и бизнес-изменение должны быть атомарны.

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

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

Idempotent Consumer делает повторную обработку события безопасной. Для параллельных копий недостаточно сначала проверить наличие ID: уникальная отметка обработки и бизнес-изменение должны быть атомарны.

В одной транзакции вставляют event ID в таблицу processed с уникальным ограничением и выполняют изменение. При конфликте событие уже обрабатывается или обработано; поведение определяют по результату транзакции, а не по предварительному SELECT. Ack отправляют после commit. Внешний HTTP-эффект не входит автоматически в эту транзакцию: нужен идемпотентный ключ у получателя или outbox и сверка. Срок хранения дедупликации должен покрывать допустимый replay.

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

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

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

Подробнее