❓ Что такое Transactional Outbox?
Это паттерн надёжной доставки событий в распределённых системах.
Проблема: при сохранении данных в БД и отправке события в Kafka/RabbitMQ — эти две операции не атомарны. Возможны ситуации, когда данные сохранятся, но событие не уйдёт, либо наоборот.
Решение: вместо прямой отправки в брокер — пишем событие в отдельную таблицу outbox в рамках одной транзакции с основными данными. Отдельный процесс читает эту таблицу и публикует события в брокер.
🔹 Ключевые свойства
— Гарантия at-least-once доставки.
— Атомарность через одну транзакцию БД.
— Потребитель должен быть идемпотентен.
🐸 Библиотека собеса по Java
#patterns
Post #1247
1.67K
- 👍 10
- ❤ 3
- 🔥 1