Eu criaria o
driver
e connection
no ator mestre. Eu então configuraria os atores do trabalhador para obter uma instância de MongoConnection
como um argumento construtor para que cada trabalhador tenha uma referência à conexão (que é realmente um proxy para um conjunto de conexões). Então, em algo como preStart
, faça com que o ator mestre crie os workers (que suponho que sejam roteados) e forneça a conexão como um argumento. Um exemplo muito simplificado poderia ser assim: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 não é exato, mas pelo menos mostra os conceitos de alto nível que descrevi.