Должен ли я создавать одноэлементный объект MongoDriver в Scala с использованием драйвера Reactivemongo?

У меня есть следующий одноэлементный объект, который имеет статический метод, называемый connect, который возвращает соединение с БД. В классическом синхронном программировании я считаю, что вам нужен только один экземпляр соединения, однако это кажется несовместимым с асинхронной моделью драйвера reactiveMongo, который использует базовую модель Актера (Akka).

   object MyMongoDriver  {



    def connect(uri: String) {



      val driver = new MongoDriver 
      val connection: Try[MongoConnection] =  
        MongoConnection.parseURI(uri).map {
          parsedURI => driver.connection(parsedURI) 
      }



  }
}

Что, кажется, происходит со мной, так это то, что создается один экземпляр MyMongoDriver, а затем каждый раз при вызове соединения возвращается несколько (столько, сколько необходимо) соединений? Я не думаю, что только что ввел блокировку, или нет? Я подозреваю, что остальная часть асинхронного поведения продолжает происходить по дизайну, учитывая, что reactivemongo является реактивным. Есть ли лучший способ обработки соединений?


person Faktor 10    schedule 09.07.2015    source источник
comment
См. обновленную документацию с example, используя injector.   -  person cchantep    schedule 15.07.2015


Ответы (2)


Как указано в документации, "экземпляр MongoDriver управляет системой субъектов ; Соединение управляет пулом соединений. Как правило, MongoDriver или MongoConnection никогда не создаются более одного раза».

person cchantep    schedule 09.07.2015
comment
Спасибо за это, и я уже прочитал документацию. Мой вопрос, в частности, я полагаю, заключается в том, должен ли я применять шаблон singleton или об этом позаботились для меня, это не было ясно в документации. Я подозреваю, что об этом позаботились, и я могу просто использовать драйвер без моего собственного шаблонного синглтона? - person Faktor 10; 09.07.2015

Вы должны использовать @Singleton для создания одноэлементного драйвера Mongodb.

Пожалуйста, прочитайте этот UserDAOMongo в качестве примера, https://github.com/luongbalinh/play-mongo/blob/master/app/dao/mongo/impl/UserDAOMongo.scala

person Luong Ba Linh    schedule 29.07.2015