Transactional Outbox: как не потерять событие после записи

Как работает Transactional Outbox: атомарная запись, публикация событий, повторная доставка, идемпотентность, порядок, очистка и мониторинг.

Transactional Outbox помогает согласовать изменение данных и последующую публикацию события без распределенной транзакции, но надежность появляется только вместе с повторной доставкой, наблюдаемостью и идемпотентным потребителем.

Запишите атомарно

Сохраняйте бизнес-изменение и событие outbox в одной транзакции той же базы. Отдельная запись оставляет окно потери.

Публикуйте повторно

Фоновый процесс читает неподтвержденные записи, отправляет их брокеру и безопасно повторяет попытку. Дубликаты нормальны.

Контролируйте поток

Измеряйте возраст очереди, ошибки, повторы и размер таблицы, задайте очистку и порядок там, где он нужен. Молчание опасно.

Проверьте внезапную остановку издателя, повтор после таймаута и обработку одного события дважды, потому что схема работает не за счет обещания однократной доставки, а благодаря управляемому повторению без двойного эффекта.

Каждого потребителя защищает идемпотентность. Критические события включайте в общую сквозную наблюдаемость.