Розбір рішень · Senior · Запитання 4 з 14
Після збереження замовлення сервіс має опублікувати подію в брокер. Події не можна втрачати, а брокер не бере участі в транзакції бази. Що зробити?
- 1Спершу коміт, потім публікація з повторами в обробнику
- 2Спершу публікація, потім коміт після підтвердження брокера
- 3Transactional outbox із публікацією через relay
Показати відповідь
Правильна відповідь: Transactional outbox із публікацією через relay
Пояснення
Запис події в одній транзакції із замовленням означає, що існують обидва або жодне, а relay доставить подію згодом. Публікація після коміту підходить для подій, які можна втратити, але збій між двома кроками її губить. Публікація першою не підходить ні до чого, що має бути узгодженим, бо невдалий коміт лишає споживачів із реакцією на неіснуюче замовлення.