com.allanbank.mongodb Java Mongodb 异步驱动程序错误 - 无法 bootstrap 连接到 MongoDB 服务器

com.allanbank.mongodb Java Mongodb Async driver error - Could not bootstrap a connection to the MongoDB servers

我正在使用 google guice 框架实现 Web 服务,在这里我注入了 mongodb 模块,构造函数初始化 mongodb 连接。在这里,对于我使用 MongoClient 并执行操作的每种方法,我在获得结果后关闭连接。问题是,如果有大量繁重的计算,连接将关闭并给出错误 could not bootstrap connection 错误。请找到实现 mongodb 连接的方法,该连接将保持活动状态或重新开始通信...

   try{
        MongoDBModule module = new MongoDBModule();
        MongoClient mongoClient =  module.getMongoDBClient();
        MongoDatabase database  = mongoClient.getDatabase(m_client.getDatabaseName());
        MongoCollection collection = database.getCollection("CAMPUS_PROD");

        //do stuff with mongoclient

        mongoClient.close();

       return document.resuls
    }catch(IOException ie){
           // print exception
     }

像所有 MongoDB 驱动程序一样,您不应该根据请求创建和关闭 MongoClient。相反,您想找到一种方法在应用程序启动时创建 MongoClient,然后在应用程序退出时关闭它。

在您的情况下,我会让您的 Guice Binder 创建 MongoClient,然后执行 bind(...).toInstance(...)。例如,

bind(MongoClient.class).toInstance(mongoClient);

在使用 MongoClient 的 类 中,您应该 调用 close()。

"cannot bootstrap" 错误是在第一个请求触发 MongoClient 发现 MongoDB 集群并且我们无法创建到任何服务器的连接时引起的。这很容易是由打开和关闭 MongoClient 引起的连接抖动引起的。