如何在Java中使用Mongodb连接池

如何在Java中使用Mongodb连接池,java,mongodb,connection-pooling,Java,Mongodb,Connection Pooling,我在java中使用连接池。只是想确保我正确使用它 下面是我的mongoconnection类和getDatabase方法 public class MongoConnection { private static MongoConnection mongoConnection = null; public static MongoConnection getInstance() { if (mongoConnection == null) { mongoConnec

我在java中使用连接池。只是想确保我正确使用它

下面是我的mongoconnection类和getDatabase方法

public class MongoConnection {

private static MongoConnection mongoConnection = null;

public static MongoConnection getInstance() {

    if (mongoConnection == null) {
        mongoConnection = new MongoConnection();
    }

    return mongoConnection;
}

private MongoClient mongoClient = null;
private MongoDatabase mongoDatabase = null;

private MongoConnection() {
    mongoClient = new MongoClient("localhost");
    mongoDatabase = mongoClient.getDatabase("test");
}

public MongoDatabase getDatabase() {
    return mongoDatabase;
}
}

下面是使用它的代码片段

public void insertCustomer(document){
MongoCollection<Document> collection = 
MongoConnection.getInstance().getDatabase().getCollection("customers");
                collection.insertOne(document);
}
public void插入客户(文档){
MongoCollection集合=
MongoConnection.getInstance().getDatabase().getCollection(“客户”);
收藏.插入器(文件);
}
inserCustomer方法被多次调用


仅此而已。

根据MongoDB Java驱动程序文档,数据库连接池由Mongo对象神奇地处理

您应该使用单个Mongo对象(正如您所做的那样),这样它就可以为您进行池化。但是,如果使用多个对象,则需要显式调用.close()

因此,在您的例子中,创建了一个对象,我们重用它,该对象保持与Mongo服务器的一个连接

您可以创建一个MongoJava实例,它将维护一个内部连接池(默认大小为10),并且它是隐藏的,您无需担心。更多信息,请查看

事实上,我现在正在生产中运行它,没有任何问题

发件人:

Mongo类被设计成线程安全的,并在线程之间共享。通常,您只为给定的DB集群创建一个实例,并在应用程序中使用它。如果出于某种原因决定创建多个mongo入口,请注意:所有资源使用限制(最大连接数等)均适用于每个mongo实例以处置实例,请确保调用mongo.close()以清理资源


根据MongoDB Java驱动程序文档,数据库连接池由Mongo对象神奇地处理

您应该使用单个Mongo对象(正如您所做的那样),这样它就可以为您进行池化。但是,如果使用多个对象,则需要显式调用.close()

因此,在您的例子中,创建了一个对象,我们重用它,该对象保持与Mongo服务器的一个连接

您可以创建一个MongoJava实例,它将维护一个内部连接池(默认大小为10),并且它是隐藏的,您无需担心。更多信息,请查看

事实上,我现在正在生产中运行它,没有任何问题

发件人:

Mongo类被设计成线程安全的,并在线程之间共享。通常,您只为给定的DB集群创建一个实例,并在应用程序中使用它。如果出于某种原因决定创建多个mongo入口,请注意:所有资源使用限制(最大连接数等)均适用于每个mongo实例以处置实例,请确保调用mongo.close()以清理资源


大家好,欢迎来到Stack Overflow,“以正确的方式使用它”。。。什么意思?请阅读如何创建一个,并花时间通过了解您在这里的方式(以及赢得您的第一个徽章)。此外,连接的数量不会随着时间的推移而减少。2017-06-27T22:09:39.682+0500 I-[conn9]结束连接127.0.0.1:57468(5个连接现在打开)2017-06-27T22:09:39.682+0500 I-[conn8]结束连接127.0.0.1:57467(5个连接现在打开)这些是关闭我的应用程序后仍然存在的5个连接。大家好,欢迎使用堆栈溢出,“以正确的方式使用它”。。。什么意思?请阅读如何创建一个,并花时间通过了解您在这里的方式(以及赢得您的第一个徽章)。此外,连接的数量不会随着时间的推移而减少。2017-06-27T22:09:39.682+0500 I-[conn9]端部连接127.0.0.1:57468(5个连接现在打开)2017-06-27T22:09:39.682+0500 I-[conn8]端部连接127.0.0.1:57467(5个连接现在打开)关闭我的应用程序后仍有5个连接。connectionpool何时关闭打开的连接,或者我可以设置最大连接时间。我的应用程序现在没有使用任何连接,但我仍然看到通过这个mongo命令db.serverStatus().connections打开的连接。只要看看这些post--1-2-3--,connectionpool什么时候关闭打开的连接,或者我可以设置最大ConnectionPentime。我的应用程序现在没有使用任何连接,但我仍然看到这个mongo命令db.serverStatus().connections打开了连接,