Пример: В бизнес-правилах указывается, что клиент должен получить сообщение подтверждения (по электронной почте или подобное) при размещении заказа.
Давайте скажем, что a NewOrderRegisteredEvent
отправляется из домена и подбирается прослушивателем событий, который отправляет сообщение подтверждения. Когда это делается, какой-то другой обработчик событий выдает исключение или что-то еще идет не так, а часть работы откатывается назад. Теперь мы отправили пользователю сообщение о подтверждении того, что было отброшено.
Что такое "cqrs" способ решения таких проблем, когда вы хотите что-то сделать после того, как часть работы была совершена? Другим осложняющим фактором является переименование событий. Я не хочу, чтобы старые подтверждающие сообщения отправлялись повторно, всякий раз, когда я воспроизводил записанные события, чтобы создать новый вид/проекцию.
Моя лучшая теория: я только начал изучать увлекательный мир cqrs и задавался вопросом, будет ли это что-то, что будет реализовано как сага? Если сага похожа на конечный автомат, где каждый переход возможен только один раз, то я думаю, что это решило бы эту проблему? Мне просто сложно понять, как это будет соответствовать командной шине и событиям домена.