如何防止连接池在mongodb上使用Java驱动程序关闭?

我正在从Java驱动程序2.12.3升级到3.3.0。奇怪的是,收集池似乎突然“起作用”。

我的设置如下:

连接在主线程中建立:

mongoClient = new MongoClient(new MongoClientURI("mongodb://localhost:27017"));

mongoClient.setWriteConcern(new WriteConcern(0, 10)); // deprecated, replace soon

database = mongoClient.getDatabase("Example");

// java.util.logging.Logger.getLogger("org.mongodb.driver").setLevel(Level.SEVERE);

它在数百个线程中使用:

org.bson.Document oldDoc = DBInteractions.readOneFromDb("articles");

使用如下功能:

static synchronized Document readOneFromDb(String col) {

return database.getCollection(col).find().limit(1).sort(new Document().append("count", 1)).first();

}

对于每个数据库交互,我都会收到这样的警告:

Sep 26, 2016 2:33:19 PM com.mongodb.diagnostics.logging.JULLogger log

INFORMATION: Closed connection [connectionId{localValue:42, serverValue:248}] to localhost:27017 because the pool has been closed.

似乎仅在一次交互后关闭了连接池。但为什么? 很困惑 任何人的主意吗?

回答:

https://api.mongodb.com/java/3.1/com/mongodb/MongoClientOptions.html

查看链接。有几种方法可以帮助您。查看与 和 有关的超时方法。


:添加了正确的答案(在下面的评论中)

MongoClientOptions options = new MongoClientOptions.Builder().socketKeepAlive(true).build(); 

MongoClient client = new MongoClient("host", options);

以上是 如何防止连接池在mongodb上使用Java驱动程序关闭? 的全部内容, 来源链接: utcz.com/qa/413219.html

回到顶部