In base allo http://cre8ivethought.com/blog/2009/11/12/cqrs--la-greg-young il componente responsabile della pubblicazione di eventi che utilizza un editore di eventi è il repository.Perché il repository CQRS pubblica eventi, non l'archivio eventi?
La mia domanda è semplicemente: perché è così?
In questo post ci viene detto che:
Il repository di dominio è responsabile della pubblicazione degli eventi, questo sarebbe normalmente all'interno di una singola transazione insieme con la memorizzazione degli eventi in negozio evento.
Mi sarei aspettato che questo fosse un compito dell'archivio degli eventi: una volta che un evento (o più eventi) è stato archiviato, è pubblicato.
Quindi perché è nel repository?
Poiché la memorizzazione della manifestazione e la pubblicazione di tale evento deve essere un'operazione atomica, pur evitando 2PC, e come lei ha ricordato, la pubblicazione di quegli eventi shouldn essere responsabile dell'archivio sottostante, è la soluzione per utilizzare piuttosto una tabella DB per memorizzare l'evento mentre si imposta un indicatore "non pubblicato". Un altro processo legge gli eventi contrassegnati come "non pubblicati" da quella tabella e quindi li pubblica, dopodiché viene impostato il marcatore e la transazione è stata eseguita? In questo caso, il polling di quella tabella per eventi non pubblicati è il modo per ottenere questo risultato? – CraigM