我有一个 cron 作业在 Linux 机器上运行,每 5 分钟运行一次。该作业执行 Java 类。
private MongoClient createConnection(int retry,List<ServerAddress> host){
try {
System.out.println("Retrying----------"+retry);
MongoClient client = new MongoClient(host, MongoClientOptions.builder()
.connectionsPerHost(10)
.threadsAllowedToBlockForConnectionMultiplier(5)
.connectTimeout(5000).writeConcern(WriteConcern.NORMAL).build());
client.getDB("admin").command("ping").throwOnError();
retry = 0;
return client;
} catch (Exception e) {
retry++;
if (retry < retryLimit) {
createConnection(retry,host);
} else {
System.out.println("Connection could not be established to host-"+host);
}
return null;
}
}
retry 是一个整数值,表示在主机无法访问的情况下可以尝试创建客户端的次数。
我传递的主机列表是 -
public static List<ServerAddress> HOST_SCRIPT = new ArrayList<ServerAddress>() {
private static final long serialVersionUID = 1L;
{
try {
add(new ServerAddress("PrimaryHost23", 27017));
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
};
创建 MongoClient 时代码被卡住。这种情况并不总是发生。当我在本地计算机上运行时,代码工作正常并且永远不会挂起。没有抛出异常。
我最近升级了 Linux 机器操作系统(从 CentOS 5 到 CentOS 6)。这是因为这个脚本之前运行良好吗?
请帮忙。
问候, 维巴夫
最佳答案
你能做的就是抛出 mongo 异常,尝试一下 mongo 客户端卡住了,你会知道尝试这个 https://api.mongodb.org/java/2.6/com/mongodb/MongoException.html
关于java - Mongo 客户端 {Mongo-Java-driver} 创建挂起持续时间。没有抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34869081/