MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Akka et ReactiveMongo

Je créerais le driver et connection dans l'acteur principal. Je configurerais ensuite les acteurs de travail pour prendre une instance de MongoConnection en tant qu'argument de constructeur afin que chaque travailleur ait une référence à la connexion (qui est en réalité un proxy vers un pool de connexions). Ensuite, dans quelque chose comme preStart , demandez à l'acteur principal de créer les travailleurs (qui, je suppose, sont routés) et de fournir la connexion en tant qu'argument. Un exemple très simplifié pourrait ressembler à ceci :

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

Ce code n'est pas exact, mais au moins il montre les concepts de haut niveau que j'ai décrits.