В одной транзакции с бизнес-данными пишут outbox-запись; отдельный воркер публикует в брокер и помечает отправленным.
Разбор
- Избегают потери события между commit и publish.
- Нужны идемпотентные consumers.
- Следить за лаговом outbox.
- Exactly-once end-to-end обычно не обещают.
Итог
Outbox синхронизирует БД и сообщения с at-least-once доставкой.