Creerei il driver
e connection
nel maestro attore. Vorrei quindi impostare gli attori worker per prendere un'istanza di MongoConnection
come argomento del costruttore in modo che ogni lavoratore abbia un riferimento alla connessione (che è in realtà un proxy per un pool di connessioni). Quindi, in qualcosa come preStart
, chiedi all'attore principale di creare i worker (che suppongo siano instradati) e fornire la connessione come arg. Un esempio molto semplificato potrebbe essere questo:
class MongoMaster extends Actor{
val driver = new MongoDriver
val connection = driver.connection(List("localhost"))
override def preStart = {
context.actorOf(Props(classOf[MongoWorker], connection).withRouter(FromConfig()))
}
def receive = {
//do whatever you need here
...
}
}
class MongoWorker(conn:MongoConnection) extends Actor{
def receive = {
...
}
}
Questo codice non è esatto, ma almeno mostra i concetti di alto livello che ho descritto.