Ho un attore di livello superiore (sotto il guardiano), chiamato Groups
che all'avvio deve caricare l'elenco di gruppi dal database e creare un gruppo di attori secondari basato su quei gruppi nel database.Qual è il modo migliore per inizializzare un attore dal database
Ho inserito il codice di caricamento del database all'interno della funzione preStart
in quanto non desidero che i messaggi vengano elaborati prima che i gruppi vengano caricati.
Attualmente l'attore Groups
è simile a questo;
var groups: Map[String, ActorRef] = Map()
override def preStart() = {
groups = getGroupsFromDB() map createGroup
}
def createGroup(pair: (String, Long)) = {
val (name, id) = pair
val group = context.actorOf(Props(new Group(id, name)), name = name)
name -> group
}
Comunque io non credo che questo è il modo migliore per gestire questa situazione, come quello che succede se il server di database non è disponibile? Quindi qual è il modo migliore di gestire l'inizializzazione dei dati da un database?
Grazie, ho preso le idee da quella pagina e le ho utilizzate nel mio disegno. cioè avendo separato gli attori Storage/DB. Vorrei che ci fosse un esempio di codice su come gestire le connessioni del database. – Phenix