1、引用jar包
<!-- https://mvnrepository.com/artifact/com.github.rholder/guava-retrying -->
<dependency>
<groupId>com.github.rholder</groupId>
<artifactId>guava-retrying</artifactId>
<version>2.0.0</version>
</dependency>
2、创建重试器对象
private final static Retryer<Boolean> retryer = RetryerBuilder.<Boolean>newBuilder()
.retryIfResult(Predicates.<Boolean>isNull())// 1.1当重试的方法返回null时候进行重试
.retryIfExceptionOfType(IOException.class)// 1.2当重试方法抛出IOException类型异常时候进行重试
.withStopStrategy(StopStrategies.stopAfterAttempt(3))// 1.3尝试执行三次(也就是重试2次)
.withWaitStrategy(WaitStrategies.fixedWait(2, TimeUnit.SECONDS))//1.4重试间隔
.build();
3、需要重试的方法,以及方法实现
Callable<Boolean> callable = new Callable<Boolean>() {
public Boolean call() throws Exception {
Boolean status = AccessInterface(tokenUrl,tokenMap,url,userBody,uuid,nameSize);
if(status == false){
return null;// do something useful here
}else{
return true;
}
}
};
public boolean AccessInterface(String tokenUrl, HashMap<String,String> tokenMap,
String url, String userBody,
String uuid, int nameSize) throws Exception {
...
if(...){
...
}else{
return false
}
return true;
}
4、添加需要重试的方法到执行器
try {
Boolean result = retryer.call(callable);
System.out.println(result);
} catch (RetryException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}