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