Sobes.tech
Назад к вопросам
Senior
2

Про Transactional Outbox Pattern что-то слышал?

Компании, где спрашивали
Финтехробот

Ответ от нейросети

sobes.tech AI

Transactional Outbox Pattern — это паттерн интеграции, который помогает гарантировать атомарность записи бизнес-данных и сообщений для внешних систем в распределённых приложениях.

Идея в том, что при выполнении бизнес-операции в рамках одной транзакции базы данных одновременно записывается событие (сообщение) в специальную таблицу — "outbox". После успешного коммита транзакции отдельный процесс или сервис читает эти сообщения из таблицы и отправляет их в очередь или внешнюю систему.

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

Пример:

  1. В транзакции сохраняем изменения в бизнес-таблицах и добавляем запись в таблицу outbox.
  2. Транзакция коммитится.
  3. Отдельный воркер периодически читает новые записи из outbox и публикует их в брокер сообщений.
  4. После успешной публикации запись из outbox удаляется или помечается как обработанная.