一、maven配置
<dependency>
<groupId>com.github.rholder</groupId>
<artifactId>guava-retrying</artifactId>
<version>2.0.0</version>
</dependency>
二、重试代码
/**
* 构建重试器
*/
private static final Retryer<Boolean> RETRIER = RetryerBuilder.<Boolean>newBuilder()
// 设置异常重试源
.retryIfException()
// 设置根据结果重试
.retryIfResult(Boolean.FALSE::equals)
// 设置等待间隔时间
.withWaitStrategy(WaitStrategies.fixedWait(1, TimeUnit.SECONDS))
// 设置最大重试次数
.withStopStrategy(StopStrategies.stopAfterAttempt(3))
.build();
public void retryTask(String name, String traceId) {
long start = System.currentTimeMillis();
try {
RETRIER.call(() -> this.doTask(name, traceId));
} catch (Exception e) {
log.info("{} 任务执行异常{}", traceId, name);
} finally {
long end = System.currentTimeMillis();
log.info("{} 任务执行耗时:{}", traceId, (end - start));
}
}
public Boolean doTask(String name, String traceId) {
log.info("{} 任务执行逻辑:{}", traceId, name);
}