MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Akka und ReactiveMongo

Ich würde den driver erstellen und connection im Meisterschauspieler. Ich würde dann die Worker-Akteure so einrichten, dass sie eine Instanz von MongoConnection übernehmen als Konstruktorargument, sodass jeder Worker einen Verweis auf die Verbindung hat (die eigentlich ein Proxy für einen Pool von Verbindungen ist). Dann in so etwas wie preStart , lassen Sie den Master-Akteur die Worker erstellen (von denen ich annehme, dass sie geroutet werden) und die Verbindung als Argument bereitstellen. Ein sehr vereinfachtes Beispiel könnte so aussehen:

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 = {
    ...
  }
}

Dieser Code ist nicht exakt, aber zumindest zeigt er die von mir beschriebenen High-Level-Konzepte.