Diciamo che volevo avere una saga che viene creata da qualche evento, quindi si siede e aspetta qualche ora, e se non succede nulla, invia qualche comando.Sagas basati sul tempo con Event Sourcing
Ora, se questa Saga era tutta in memoria e dovevo riavviare l'app/server, la saga sarebbe stata scaricata e non sarebbe mai più stata visualizzata, giusto?
Vorrei utilizzare Event Sourcing per portare questo Saga alla velocità una volta che il sistema è di nuovo online?
In tal caso, mi servirebbe un Evento Store separato con "saghe attive" che possono essere riprodotte all'avvio del sistema, per aumentare la velocità di Sagas. Finora mi sembra buono, ma come potrei implementare il timeout?
Avrei bisogno di un modo per "falsificare" i timeout al replay, tenendo conto che potrebbero esserci diversi timeout successivi, a seconda degli eventi che entrano nella saga.
Come posso creare una Saga che dura 7 giorni? Sono sicuro che deve essere persistente in caso di riavvio del servizio, giusto? –
@ MauroDestro Non è necessario tenere in memoria le proprie saghe quando si utilizza Event Sourcing. Pensa a una saga come entità che puoi riprodurre prima che possa gestire un evento. Confronta come si riprodurrebbe un aggregato prima di poter gestire un comando. L'utilizzo dell'approccio di Jonathan per gestire i timeout (rendendoli eventi di per sé stessi) rende possibile replicare anche il "tempo". –