Продвинутый
Как работает паттерн Transactional Outbox?
В микросервисах часто нужно сделать две вещи одновременно: сохранить данные в БД и отправить событие в Kafka. Если БД сохранится, а Kafka упадет — будет рассинхрон.
Transactional Outbox решает это:
1. В БД сервиса создается таблица outbox.
2. В рамках одной транзакции БД мы сохраняем бизнес-сущность (Заказ) и записываем событие (\"Заказ создан\") в таблицу outbox.
3. Отдельный фоновый процесс (например, Debezium) читает таблицу outbox и гарантированно отправляет события в Kafka.
✅ Итог: 100% гарантия доставки (At-least-once).