Что такое паттерн Transactional Outbox?

Transactional Outbox сохраняет бизнес-изменение и запись события в одной транзакции БД, а отдельный процесс доставляет событие в брокер. Так устраняется ненадёжная двойная запись.

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

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

Transactional Outbox сохраняет бизнес-изменение и запись события в одной транзакции БД, а отдельный процесс доставляет событие в брокер. Так устраняется ненадёжная двойная запись.

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

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

Transactional Outbox сохраняет бизнес-изменение и запись события в одной транзакции БД, а отдельный процесс доставляет событие в брокер. Так устраняется ненадёжная двойная запись.

Если сначала сохранить заказ, затем отправить сообщение, сбой между действиями оставит заказ без события. Outbox фиксирует оба факта атомарно в одной БД. Доставщик читает записи или изменения через CDC, отправляет сообщения и отмечает продвижение. При сбое после отправки возможна повторная доставка, поэтому нужны event_id и идемпотентность потребителя. Также продумывают порядок событий одного агрегата, очистку истории, повторы и мониторинг отставания. Паттерн не создаёт автоматическую exactly-once-гарантию во всех внешних системах.

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

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

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

Подробнее