CQRS - Quando enviar mensagem de confirmação?

Exemplo: As regras de negócios informam que o cliente deve receber uma mensagem de confirmação (e-mail ou similar) quando um pedido for feito.

Vamos dizer que umNewOrderRegisteredEvent é despachado do domínio e é selecionado por um ouvinte de evento que envia a mensagem de confirmação. Quando isso é feito, algum outro manipulador de eventos lança uma exceção ou algo dá errado e a unidade de trabalho é revertida. Nós agora enviamos ao usuário uma mensagem de confirmação para algo que foi revertido.

Qual é a maneira "cqrs" de resolver problemas como este, onde você quer fazer algo depois que uma unidade de trabalho foi comprometida? Outro fator complicador é a repetição de eventos. Não quero que as mensagens de confirmação antigas sejam reenviadas sempre que eu reproduzir os eventos gravados para criar uma nova visualização / projeção.

Minha melhor teoria até agora: eu comecei a olhar para o mundo fascinante de cqrs e queria saber se isso é algo que seria implementado como uma saga? Se uma saga é como uma máquina de estado onde cada transição só pode ocorrer uma única vez, então eu acho que isso resolveria esse problema? Eu só tenho dificuldade em visualizar como isso vai se encaixar com o barramento de comando e eventos de domínio ..

questionAnswers(2)

yourAnswerToTheQuestion