Sto progettando un backend usando CQRS + Event sourcing, usando Akka + Scala. Non sono sicuro di come gestire uno stato crescente. Ad esempio, avrò un elenco crescente di utenti. A mio avviso, ogni utente verrà creato in seguito a un evento UserCreated, tali eventi verranno riprodotti da PersistentActor e gli utenti verranno archiviati in una raccolta. Qualcosa di simile:Event-sourcing con akka-persistance: stato crescente come lista?
class UsersActor extends PersistentActor {
override def persistenceId = ....
private case class UsersState(users: List[User])
private var state = UsersState()
....
}
Ovviamente tale stato sarebbe poi crescere troppo grande per essere tenuto in memoria per questo attore, quindi credo che sto facendo qualcosa di sbagliato.
Ho trovato il progetto di esempio this: l'idea sembra che ogni utente debba essere tenuto da un diverso attore e caricato (dalla cronologia eventi) secondo necessità.
Qual è il modo giusto per farlo? Molte grazie.
L'individuazione degli eventi non è appropriata per tutte le parti dell'applicazione .. è necessario l'elenco di tutti gli utenti per interrogarlo per consentire agli utenti di accedere o uscire? – jazmit
Grazie per il tuo commento @jazmit - no, non ho bisogno di "presentare" tutti gli utenti contemporaneamente. Sto studiando il progetto che ho collegato, sembra solo "gonfiare" l'oggetto di cui ha bisogno per servirlo o aggiornarlo. Avete ulteriori suggerimenti? – ticofab
Sì, ma il progetto seme utilizza un attore persistente per utente. Ancora non sono sicuro di cosa stai cercando esattamente, l'unica cosa che posso dire è di non progettare gli attori di dominio con uno stato in continua crescita .. – jazmit