Все статьи
OPERATIONS & QUEUESFZM2026-08-245 мин чтения

Паттерн Transactional Outbox: надежная доставка событий без потерь

Двухфазные коммиты сложны, а прямая отправка в очередь после коммита чревата потерей сообщений. Разбираем паттерн Transactional Outbox в FZM.

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

2. Таблица Outbox в транзакции В FZM событие записывается в таблицу `outbox_events` внутри той же ACID-транзакции PostgreSQL, что и бизнес-сущность. Если транзакция откатилась — событие не создается.

3. Идемпотентные воркеры на Redis Фоновый процесс вычитывает события и передает их потребителям с гарантией доставки At-Least-Once и дедупликацией по ключу идемпотентности.

СТАРТ ПРОЕКТА

Есть задача? Обсудим решение и следующий шаг.

Опишите бизнес-задачу — поможем определить подход, состав проекта и предварительный бюджет.