Jag skulle skapa driver
och connection
i mästerskådespelaren. Jag skulle sedan ställa in arbetsaktörerna att ta en instans av MongoConnection
som ett konstruktorargument så att varje arbetare har en referens till anslutningen (som egentligen är en proxy till en pool av anslutningar). Sedan, i något som preStart
, låt huvudskådespelaren skapa arbetarna (som jag antar är dirigerade) och tillhandahålla anslutningen som en arg. Ett mycket förenklat exempel kan se ut så här:
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 = {
...
}
}
Den här koden är inte exakt, men den visar åtminstone de begrepp på hög nivå jag beskrev.