CQRS - ¿Cuándo enviar un mensaje de confirmación?

Ejemplo: Las reglas comerciales establecen que el cliente debe recibir un mensaje de confirmación (correo electrónico o similar) cuando se haya realizado un pedido.

Digamos que unNewOrderRegisteredEvent es enviado desde el dominio y es recogido por un detector de eventos que envía el mensaje de confirmación. Cuando se hace eso, otro manejador de eventos lanza una excepción o algo falla y la unidad de trabajo se retrotrae. Ahora hemos enviado al usuario un mensaje de confirmación para algo que se ha retrotraído.

¿Cuál es la manera "cqrs" de resolver problemas como este donde quiere hacer algo después de que se haya comprometido una unidad de trabajo? Otro factor de complicación es la repetición de eventos. No quiero que se vuelvan a enviar los viejos mensajes de confirmación cada vez que reproduzco eventos grabados para crear una nueva vista / proyección.

Mi mejor teoría hasta ahora: acabo de empezar a estudiar el fascinante mundo de los cqrs y me preguntaba si esto sería algo que se implementaría como una saga. Si una saga es como una máquina de estados en la que cada transición solo puede tener lugar una vez, ¿supongo que eso resolvería este problema? Solo tengo dificultades para visualizar cómo encajará esto con el bus de comandos y los eventos de dominio ...

Respuestas a la pregunta(2)

Su respuesta a la pregunta