如何处理MongoDB中的过时连接



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

回收 mongod 服务后,我从我的 Liferay Portlet 中得到这个异常:

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

您需要在代码中包含"处理异常并重试逻辑"。这可能会有所帮助:异常,以及如何在重置连接时最好地重试?

我最终编写了在请求每个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;
}

最新更新