Как паттерн Transactional Outbox гарантирует атомарность обновления БД и отправки события в брокер без 2PC?

Outbox атомарно сохраняет бизнес-изменение и запись о будущем событии в одной БД-транзакции. Отправка в брокер выполняется отдельно; паттерн не делает commit БД и сетевую отправку одной атомарной операцией.

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

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

Outbox атомарно сохраняет бизнес-изменение и запись о будущем событии в одной БД-транзакции. Отправка в брокер выполняется отдельно; паттерн не делает commit БД и сетевую отправку одной атомарной операцией.

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

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

Outbox атомарно сохраняет бизнес-изменение и запись о будущем событии в одной БД-транзакции. Отправка в брокер выполняется отдельно; паттерн не делает commit БД и сетевую отправку одной атомарной операцией.

Relay читает committed outbox и публикует события, затем отмечает доставку. Если он упадёт после отправки до отметки, событие будет повторено, поэтому потребитель должен быть идемпотентным. До commit событие не публикуют. Нужны устойчивые идентификаторы, контроль отставания, правила порядка и безопасная конкуренция relay. Гарантия — отсутствие разрыва «данные записаны, намерение отправки потеряно» при соблюдении условий, а не универсальное exactly-once.

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

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

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

Подробнее