Transactional outbox
Зачем
- Обеспечить надежную отправку событий
- ensures consistency between business data and messages
- handle at-least-once and exactly-once delivery
Плюсы и минусы
Минусы:
- increased latency
- additional boilerplate
- more load on the database.
Patterns
- Изменение бизнес данных и генерация события исходящего в одной транзакции
- For best performance, outbox data should be stored in the same database as business data
- Persistence NOSQL, SQL
- polling implementation (read table in SQL store)
- push implementation