Según http://cre8ivethought.com/blog/2009/11/12/cqrs--la-greg-young, el componente responsable de publicar eventos utilizando un editor de eventos es el repositorio.¿Por qué el repositorio CQRS publica eventos, no la tienda de eventos?
Mi pregunta simplemente es: ¿Por qué es eso?
En esta entrada del blog se nos dice que:
El dominio repositorio es responsable de la publicación de los eventos, esto normalmente estaría dentro de una única transacción, junto con el almacenamiento de los eventos en el almacén de eventos.
Hubiera esperado esto como una tarea de la tienda de eventos: una vez que un evento (o eventos múltiples) ha sido almacenado, se publica.
Entonces, ¿por qué está en el repositorio?
Debido a que el almacenamiento del evento y la publicación de ese evento debe ser operación atómica evitando al mismo tiempo 2PC, y como usted ha mencionado, la publicación de esos eventos no deben No es responsabilidad del almacén de eventos subyacente, es la solución para usar una tabla DB para almacenar el evento mientras se establece un marcador "no publicado". ¿Ha leído otro proceso los eventos marcados como "no publicados" de esa tabla y luego los publica, después de lo cual se establece el marcador y se confirma la transacción? Si este es el caso, ¿está sondeando esa tabla para eventos no publicados la manera de lograr esto? – CraigM