我让一个cron-job在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;
}
}重试是一个整数值,表示在主机无法访问的情况下可以尝试创建客户端的次数。
我传递的主机列表是-
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();
}
}
};代码在创建I MongoClient时被卡住。这种情况并不总是发生。当我在我的本地机器上运行时,代码运行得很好,并且从不挂起。没有抛出异常。
我最近升级了Linux机器操作系统(从CentOS 5升级到CentOS 6)。这可能是因为这个脚本之前工作得很好吗?请帮帮忙。
你好,Vibhav
发布于 2016-01-19 14:01:11
你能做的就是抛出mongo异常,试试mongo客户端卡住的那个,你会知道的,试试这个https://api.mongodb.org/java/2.6/com/mongodb/MongoException.html
发布于 2016-01-19 16:34:02
是的,当然,实际上我是在用java创建爬虫,它可以抓取任何特定网站的所有链接,并使用Jsoup和jcabi api验证css和html结构,但当我用来存储到数据库的链接时,它没有抛出任何异常,甚至也没有存储数据。所以我就这么做了
catch (MongoException e){
System.err.print(e.getClass().getName()+": "+e.getMessage());
}发布于 2016-01-19 20:11:59
你有没有检查过你为你的项目上传的jar的兼容性,就像以前的Mongo mongo = new Mongo(host,port)一样;但这已经被弃用了。试着检查一下,甚至是你的MongoDb jar。
https://stackoverflow.com/questions/34869081
复制相似问题