data-infra
Словарь ↗Транзакционный outbox (transactional outbox)
Транзакционный outbox — это шаблон, решающий тонкую, но частую ошибку: вы обновляете базу и публикуете событие, но это две разные системы, и сбой между ними оставляет вас с одним без другого. Решение — записать событие в таблицу outbox внутри той же транзакции базы данных, что и бизнес-изменение. Либо фиксируется и то и другое, либо ничего. Затем отдельный процесс читает неопубликованные строки из outbox, доставляет их в очередь сообщений или поток событий и помечает каждую как отправленную. Инструменты захвата изменений (CDC), читающие журнал упреждающей записи, — распространённый способ эффективно выполнить этот шаг. Для SaaS-разработчиков это способ получить надёжное атомарное «обновить и уведомить» без распределённых транзакций — критично, когда заказ обязан всегда выпускать событие «order.created». На практике: потребители должны быть идемпотентными, потому что outbox гарантирует доставку не менее одного раза, и одно и то же событие может прийти дважды после повтора.
Похожие термины