后台任务假如网络问题失败,要不要一直无限重试直到网络恢复?
如果不无限重试,那很多任务可能都失败了,任务太多的话全部手动重新提会很麻烦吧
但是无限重试好像不是一个好的方式?
1、加重试次数限制,比如重试10次之后,不再请求重试;
2、加下一次重试时间限制,比如第一次失败了,更新下一次重试时间,比如是20秒之后,第二次失败之后,更新下一次重试时间为30秒,比如可以重试10次,最后两次的重试间隔时间可以设置的大一些,比如1小时、2小时(你可以参考rocketmq的重试机制)。
这样设置的好处是将数据分散,不会在某一个时刻大批量重试;还有增加了系统可靠性,比如下游系统挂了,在半个小时之后重新启动,数据在下游服务正常之后,还可以重试;重试测试和重试间隔时间可以弄成配置,灵活更改
超时递增,第一10秒,第二次,30,第三次60.。。。。。
InetAddress geek = InetAddress.getByName("127.0.0.1");
if(geek.isReachable(5000)){
System.out.println("network ok");
}else{
System.out.println("network error");
}