Преимущества паттерна Transactional Outbox:
- сообщения гарантированно отправляются тогда и только тогда, когда транзакция базы данных фиксируется; 14
- сообщения отправляются брокеру сообщений в том порядке, в котором они были отправлены приложением. 1
Недостатки паттерна Transactional Outbox:
- потенциально подвержен ошибкам, поскольку разработчик может забыть опубликовать сообщение/событие после обновления базы данных; 1
- ретранслятор сообщений может публиковать сообщения более одного раза. 1 Например, аварийно завершать работу после публикации сообщения, но до того, как это будет зафиксировано. 1 После перезапуска ретранслятор снова опубликует сообщение. 1 Поэтому потребитель сообщений должен быть идемпотентным, возможно, путём отслеживания идентификаторов сообщений, которые он уже обработал. 1