Transactional outbox сохраняет бизнес-изменение и запись будущего события в одной транзакции БД. Отдельный relay публикует outbox в брокер после commit.
Как согласовать изменение в базе данных и публикацию события?
Transactional outbox сохраняет бизнес-изменение и запись будущего события в одной транзакции БД. Отдельный relay публикует outbox в брокер после commit.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Transactional outbox сохраняет бизнес-изменение и запись будущего события в одной транзакции БД. Отдельный relay публикует outbox в брокер после commit.
Если relay отправил событие и упал до отметки об отправке, возможен повтор. Поэтому нужен стабильный event ID и идемпотентный consumer. Публикация напрямую «после commit» без outbox оставляет окно потери при сбое процесса. Для порядка событий используют номер версии агрегата и согласованное партиционирование; CDC — один из способов доставки outbox.