CQRS - Когда отправлять подтверждающее сообщение?

Пример: Бизнес-правила гласят, что клиент должен получить подтверждающее сообщение (электронное письмо или подобное) при размещении заказа.

Предположим, что NewOrderRegisteredEventотправлено из домена и получено прослушивателем событий, который отправляет подтверждающее сообщение. Когда это сделано, какой-то другой обработчик событий выдает исключение или что-то еще идет не так, и единица работы откатывается.Теперь мы отправили пользователю сообщение с подтверждением того, что было отменено.

Что такое способ "cqrs" для решения подобных проблем, когда вы хотите что-то сделать после того, как единица работы была зафиксирована? Еще одним осложняющим фактором является повторение событий. Я не хочу, чтобы старые сообщения с подтверждением повторно отправлялись всякий раз, когда я воспроизводил записанные события, чтобы построить новое представление/проекцию.

Моя лучшая теория на данный момент: я только начал изучать увлекательный мир cqrs и задавался вопросом, будет ли это реализовано как сага? Если сага похожа на конечный автомат, где каждый переход может произойти только один раз, я думаю, это решит эту проблему? Мне просто трудно представить, как это будет сочетаться с командной шиной и событиями домена..

13
задан Mikael Östberg 13 June 2012 в 13:46
поделиться