Yo crearía el driver
y connection
en el maestro actor. Luego configuraría los actores trabajadores para tomar una instancia de MongoConnection
como argumento de constructor para que cada trabajador tenga una referencia a la conexión (que en realidad es un proxy para un conjunto de conexiones). Luego, en algo como preStart
, haga que el actor maestro cree los trabajadores (que supongo que están enrutados) y proporcione la conexión como argumento. Un ejemplo muy simplificado podría verse así:
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 = {
...
}
}
Este código no es exacto, pero al menos muestra los conceptos de alto nivel que describí.