Бих създал driver
и connection
в главния актьор. След това бих настроил работните актьори да вземат екземпляр на MongoConnection
като аргумент на конструктора, така че всеки работник да има препратка към връзката (която всъщност е прокси към набор от връзки). След това в нещо като preStart
, накарайте главния актьор да създаде работниците (които предполагам, че са маршрутизирани) и да предостави връзката като аргумент. Много опростен пример може да изглежда така:
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 = {
...
}
}
Този код не е точен, но поне показва концепциите на високо ниво, които описах.