Каким образом паттерн Outbox Pattern помогает гарантировать, что событие в брокер сообщений RabbitMQ уйдет только в том случае, если транзакция в реляционной БД завершилась успешно?

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

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

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

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

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

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

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

После подтверждения брокера relay отмечает доставку. Между публикацией и этой отметкой возможен сбой, поэтому повторная доставка допустима и consumer должен быть идемпотентным. Publisher confirms подтверждают приём брокером, а не бизнес-обработку. Outbox устраняет опасную двойную запись «БД плюс брокер», но сам по себе не обеспечивает exactly-once эффект.

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

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

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

Подробнее