我需要关闭mongodb的连接吗?

时间:2014-12-12 19:12:01

标签: java mongodb

我是mongodb的新手。 我使用mongodb 2.6.x.我正在尝试使用java驱动程序2.12.x版本与mongodb连接,并使用MongoClient与mongodb连接。每次我正在进行任何操作时,我都会在mongodb管理部分收到消息,比如连接数是打开的,每次我在mongodb中进行一些crud操作时连接数会增加。所以,我担心的是我应该手动关闭连接。如果我应该手动关闭连接,那么过程是什么。因为从中获取Db对象的MongoClient没有给出任何方法来关闭连接。

我为了获得连接而编写的代码是这样的:

new MongoClient("localhost", 27017).getDB("test");

从这里我得到了DB对象。我正在尝试使用我的Web应用程序。

如果有任何想法,请让我知道我应该手动关闭mongodb连接。如果是,那么如何?

提前致谢。

2 个答案:

答案 0 :(得分:1)

与传统的数据库驱动程序不同,mongodb java驱动程序handles the pooling and connection management。所以你在这里很安全。但是,您可能希望在关闭应用程序时通过调用MongoClient上的close来添加关闭挂钩。

答案 1 :(得分:0)

是的,当我们使用java驱动程序连接到mongodb时,我们可以选择使我们的连接更加灵活。我使用的是2.13.x版的java驱动程序。我得到了这样的解决方案:

MongoClientOptions是一个类,我们可以从中获取MongoClientOptions.builder(),我们按照我们的要求配置选项,最后当我们调用MongoClient获取数据库时,在构造函数中我们可以传递MongoClientOptions使我们的联系更加灵活。

代码看起来像这样。

MongoClientOptions mongoClientOptions= MongoClientOptions.builder().connectionsPerHost(500)
 .connectTimeout(1000).socketKeepAlive(false).cursorFinalizerEnabled(true).maxConnectionLifeTime(50)
.writeConcern(WriteConcern.ACKNOWLEDGED).threadsAllowedToBlockForConnectionMultiplier(10).readPreference(ReadPreference.primary()).build();


new MongoClient(listOfServer, mongoClientOptions).getDB();

我确实尝试过这个解决方案并开始进行crud操作,在那里我发现每次击中的连接数同时也接近。