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

Что такое Outbox паттерн и как он работает?

Компании, где спрашивали
Salmon

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

sobes.tech AI

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

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

Затем отдельный процесс или компонент периодически читает из таблицы outbox новые сообщения и отправляет их в очередь (Kafka, RabbitMQ и т.п.). После успешной отправки сообщение помечается как отправленное или удаляется.

Преимущества:

  • Гарантируется, что сообщение не потеряется и не будет отправлено дважды.
  • Избегается проблема несогласованности между базой данных и системой сообщений.

Пример работы:

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

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