【问题标题】:How to use Mongodb Connecton Pooling in Java如何在 Java 中使用 Mongodb 连接池
【发布时间】:2017-06-27 16:34:49
【问题描述】:

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

所以,这是我的带有 getDatabase 方法的 mongoconnection 类。

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

}

这里是使用它的代码 sn-p。

public void insertCustomer(document){
MongoCollection<Document> collection = 
MongoConnection.getInstance().getDatabase().getCollection("customers");
                collection.insertOne(document);
}

inserCustomer 方法被多次调用。

仅此而已。

【问题讨论】:

  • 您好,欢迎来到 Stack Overflow,“以正确的方式使用它”……您是什么意思?请阅读如何创建Minimal, Complete, and Verifiable example 并花时间通过welcome tour 了解您在此处的方式(并获得您的第一个徽章)。
  • 连接数也不会随着时间的推移而减少。 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 个连接。

标签: java mongodb connection-pooling


【解决方案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 类被设计成线程安全的并且在线程之间共享。通常,您只为给定的数据库集群创建 1 个实例并在您的应用程序中使用它。如果由于某种原因您决定创建许多 mongo 实例,请注意:所有资源使用限制(最大连接数等)适用于每个 mongo 实例以处置实例,请确保调用 mongo.close() 来清理资源

【讨论】:

猜你喜欢
  • 2013-05-17
  • 2011-01-11
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多