У меня вопрос, как бороться с сагой, где принимаются решения
зависит от события, которое было опубликовано до создания саги.
Вот пример, иллюстрирующий мою проблему:
Представьте, что у меня есть CustomerAR и OrderAR. Когда customerAR
созданный процесс проверки запускается, результатом этого процесса является
сумма заказа, которую клиент может потратить без особых затрат
авторизации. Я не буду вдаваться в подробности об этом процессе, потому что
это вне контекста. Когда сумма рассчитана, команда отправляется
CustomerAR с рассчитанной суммой и CustomerAR
публикует событие (CustomerMaxOrderAmountEvent) с этим значением. Так
пока все хорошо.
Затем, через несколько недель, клиент размещает заказ. OrderAR является
создал и запускает мою OrderSaga. Сага ждет пока заказ
создан полностью, а затем должен принять решение, если ему нужно отправить
AutorizationCommand для этого заказа. Чтобы принять это решение, оно должно
знать, опубликован ли CustomerMaxOrderAmountEvent и значение
количество. Обычно OrderSaga также подписывается на
CustomerMaxOrderAmountEvent, но проблема в том, что это событие никогда не будет
происходят потому, что это уже было в прошлом.
Как мне с этим бороться. Должен ли я запросить модель чтения, чтобы узнать
значение, если я должен отправить команду, чтобы получить значение, я должен сделать
ссылка на CustomerAR, если я буду воспроизводить все исторические события в
сага, поэтому он уже знает историю.
UPDATE
Обратите внимание, что речь идет о концепции, а не об этом конкретном примере. Этот пример является чистым для прояснения проблемы: «2 несвязанных агрегатных корня, которые не являются частью одного и того же ограниченного контекста».
Благодарен за помощь.
Мелвин