java mongodb 关闭连接_如何在mongodb上使用java驱动程序保持连接池关闭?

在升级Java驱动程序从2.12.3到3.3.0后,遇到MongoDB连接池关闭的问题。每次数据库交互后都会收到关闭连接的警告。问题可能与连接池配置或超时设置有关。解决方案是通过设置MongoClientOptions,例如启用socketKeepAlive选项来避免连接过早关闭。
摘要由CSDN通过智能技术生成

我正在从

java驱动程序2.12.3升级到3.3.0.奇怪的是,收集池似乎突然“起作用”.

我的设置如下:

Connection在主线程中建立:

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值