如何在Java中使用Mongodb Connecton Pooling

时间:2017-06-27 16:34:49

标签: java mongodb connection-pooling

我在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);
}

inserCustomer方法被多次调用。

这就是全部。

1 个答案:

答案 0 :(得分:1)

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

你应该使用一个Mongo对象(正如你所做的那样),所以它会为你做池。但是,如果使用多个对象,则需要显式调用.close()。

所以在你的情况下创建一个对象并重新使用它,该对象维护与Mongo服务器的一个连接。

您可以创建一个Mongo Java实例,它将维护一个内部连接池(默认大小为10),并且它是隐藏的,您不必担心它。如需更多信息,请查看.. http://www.mongodb.org/display/DOCS/Java+Driver+Concurrency

实际上我现在正在生产中运行它并且没有任何问题。

自:http://www.mongodb.org/display/DOCS/Java+Tutorial

  

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