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