MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Akka e ReactiveMongo


Eu criaria o driver e connection no ator mestre. Eu então configuraria os atores do trabalhador para obter uma instância de MongoConnection como um argumento construtor para que cada trabalhador tenha uma referência à conexão (que é realmente um proxy para um conjunto de conexões). Então, em algo como preStart , faça com que o ator mestre crie os workers (que suponho que sejam roteados) e forneça a conexão como um argumento. Um exemplo muito simplificado poderia ser assim:
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 não é exato, mas pelo menos mostra os conceitos de alto nível que descrevi.