我应该使用 Reactivemongo 驱动程序在 Scala 中创建一个单例 MongoDriver 对象吗?
Should I be creating a singleton MongoDriver object in Scala using the Reactivemongo driver?
我有以下单例对象,它有一个名为 connect 的静态方法,returns 一个数据库连接。在经典的同步编程中,我被理解为相信您只需要一个连接实例,但这似乎与使用底层 Actor (Akka) 模型的 reactiveMongo 驱动程序的异步模型不一致。
object MyMongoDriver {
def connect(uri: String) {
val driver = new MongoDriver
val connection: Try[MongoConnection] =
MongoConnection.parseURI(uri).map {
parsedURI => driver.connection(parsedURI)
}
}
}
不过,我似乎正在发生的事情是实例化了一个 MyMongoDriver 实例,然后每次调用 connect 时都会返回多个(根据需要尽可能多)连接?我不认为我只是介绍了阻塞,是吗?鉴于 reactivemongo 是反应性的,我怀疑其余的异步行为会继续通过设计发生。有没有更好的方法来处理连接?
如documentation"A MongoDriver instance manages an actor system; A connection manages a pool of connections. In general, a MongoDriver or a MongoConnection is never instantiated more than once."
所示
你必须使用@Singleton 来创建一个Mongodb驱动程序单例。
请以UserDAOMongo为例,https://github.com/luongbalinh/play-mongo/blob/master/app/dao/mongo/impl/UserDAOMongo.scala
我有以下单例对象,它有一个名为 connect 的静态方法,returns 一个数据库连接。在经典的同步编程中,我被理解为相信您只需要一个连接实例,但这似乎与使用底层 Actor (Akka) 模型的 reactiveMongo 驱动程序的异步模型不一致。
object MyMongoDriver {
def connect(uri: String) {
val driver = new MongoDriver
val connection: Try[MongoConnection] =
MongoConnection.parseURI(uri).map {
parsedURI => driver.connection(parsedURI)
}
}
}
不过,我似乎正在发生的事情是实例化了一个 MyMongoDriver 实例,然后每次调用 connect 时都会返回多个(根据需要尽可能多)连接?我不认为我只是介绍了阻塞,是吗?鉴于 reactivemongo 是反应性的,我怀疑其余的异步行为会继续通过设计发生。有没有更好的方法来处理连接?
如documentation"A MongoDriver instance manages an actor system; A connection manages a pool of connections. In general, a MongoDriver or a MongoConnection is never instantiated more than once."
所示你必须使用@Singleton 来创建一个Mongodb驱动程序单例。
请以UserDAOMongo为例,https://github.com/luongbalinh/play-mongo/blob/master/app/dao/mongo/impl/UserDAOMongo.scala