È molto interessante come ripristinare il modello di lettura nel sistema basato su CQRS.
In modalità regolare i comandi dei processi di sistema, crea eventi di dominio e li invia al bus dei messaggi. Quindi un'altra parte del sistema (chiamala sottosistema RM) elabora questi messaggi e li salva nel modello di lettura. Questa modalità è abbastanza buona per scopi regolari.
Ma come dovrei riparare il mio modello letto? Ad esempio, l'archiviazione con il modello di lettura è stata danneggiata o ho cambiato la posizione di archiviazione. Voglio che il mio sistema ripristini il modello letto durante l'inizializzazione, prima che le query inizino a provare i dati letti. E voglio sapere la fine del processo di riparazione.
Posso immaginare due modi:
- Crea un controller REST, attraverso il quale il mio sottosistema RM sarà in grado di interrogare tutti gli eventi del dominio (nei moduli dei messaggi) e ripristinarlo in modo sincrono.
- Crea un meccanismo speciale, chiamando quale mio sottosistema RM sarà in grado di avviare la riproduzione di tutti i messaggi. Per quanto mi riguarda, questa via non è molto buona, perché non posso controllare il tempo di completamento del processo di riparazione. E il secondo, se ci sono altri consumatori di messaggi, probabilmente possono corrompere i loro dati.
Quale via è più preferibile?