如何处理MongoDB中的陈旧连接

时间:2012-05-03 13:12:54

标签: mongodb database-connection

在Mongo中自动刷新陈旧连接的最佳方法是什么?

在回收mongod服务之后,我从Liferay Portlets获得了这个例外:

com.mongodb.MongoException$Network: can't call something : /127.0.0.1:27017/connection_test

2 个答案:

答案 0 :(得分:1)

您需要在代码中“处理异常并重试逻辑”。这可能有所帮助:Exceptions, and how best to retry when a connection is reset?

答案 1 :(得分:1)

我最终编写的代码在请求每个DBCollection之前轮询连接。

private DBCollection safeColl(String pCollectionName, DBCollection pColl) {
    try {
        if (log.isDebugEnabled()) {
            log.debug("getting safe coll count on coll: " + pColl.getName());
        }
        pColl.count();
    } catch (MongoException e) {
        if (e.getMessage().startsWith("can't call something")) {
            pColl = getCollection(pCollectionName, true);
            return pColl;
        } else {
            throw e;
        }
    }
    return pColl;
}