sql >> Base de Datos >  >> NoSQL >> MongoDB

Akka y ReactiveMongo

Yo crearía el driver y connection en el maestro actor. Luego configuraría los actores trabajadores para tomar una instancia de MongoConnection como argumento de constructor para que cada trabajador tenga una referencia a la conexión (que en realidad es un proxy para un conjunto de conexiones). Luego, en algo como preStart , haga que el actor maestro cree los trabajadores (que supongo que están enrutados) y proporcione la conexión como argumento. Un ejemplo muy simplificado podría verse así:

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 no es exacto, pero al menos muestra los conceptos de alto nivel que describí.