Предложенное решение не накладывает ограничение с синхронным ожиданием :) Достаточно просто зафиксировать факт заказа(стейт бизнес-процесса) и вызвать оркестратор, который и будет выполнять шаги бизнес-процесса. И по мере этого выполнения может изменяться статус заказа, в том числе возникать различные причины отмены(закончились места, не прошла оплата и тд)
Материал хорошо изложен. Спасибо. 5 копеек про паттерн outbox, кажется пример нет очень удачно подобран. На другом конце сидит пользователь и в синхроне ждет , что его переведут на оплату например, мы не можем этого сделать, так не отправили сообщение о бронировании. При таком кейсе надо думать доп сценарий , сейчас не можем зайдите позже. Но это лишнее усложне, с непонятой конверсией. Делать это придется во всех сервисах. На мой взгляд в таких кейсах лучше сразу отказать по техническим причинам и откатить , что необходимо, запомнить д данные заявки и пригласить клиента снова создать заявку после решения проблем. Данные старой заявки использовать для автозаполнения. Т.е. когда есть "синхронный" путь клиента применять паттер outbox надо оценивая , как меняется сценарий клиента и сколько сложности это добавит.
Предложенное решение не накладывает ограничение с синхронным ожиданием :)
Достаточно просто зафиксировать факт заказа(стейт бизнес-процесса) и вызвать оркестратор, который и будет выполнять шаги бизнес-процесса. И по мере этого выполнения может изменяться статус заказа, в том числе возникать различные причины отмены(закончились места, не прошла оплата и тд)
Материал хорошо изложен. Спасибо. 5 копеек про паттерн outbox, кажется пример нет очень удачно подобран. На другом конце сидит пользователь и в синхроне ждет , что его переведут на оплату например, мы не можем этого сделать, так не отправили сообщение о бронировании. При таком кейсе надо думать доп сценарий , сейчас не можем зайдите позже. Но это лишнее усложне, с непонятой конверсией. Делать это придется во всех сервисах. На мой взгляд в таких кейсах лучше сразу отказать по техническим причинам и откатить , что необходимо, запомнить д данные заявки и пригласить клиента снова создать заявку после решения проблем. Данные старой заявки использовать для автозаполнения. Т.е. когда есть "синхронный" путь клиента применять паттер outbox надо оценивая , как меняется сценарий клиента и сколько сложности это добавит.