一、等待策略相关类:
1、等待策略接口:WaitStrategy接口
该接口只有一个方法,就是返回尝试失败之后,下一次尝试之前的等待时间。
long computeSleepTime(Attempt failedAttempt);
2、创建等待策略对象的工厂类:com.github.rholder.retry.WaitStrategies类,这是一个常量类,负责创建等待策略对象。
在该工厂类的内部实现了七种等待策略,如下:
二、七种等待策略详解如下:
1、等待固定时间的策略:FixedWaitStrategy类
这个类很简单,方法抛出异常后,隔固定时间进行一次重试即可。
// 方法抛出异常后,conputeSleepTime返回固定的时间,单位ms
@Override public long computeSleepTime(Attempt failedAttempt) { return sleepTime; }
2、等待时间自增的策略:IncrementingWaitStrategy类
这个类每次重试的间隔时间随着重试次数的增加而增加,每次增加固定的时间。
// initialSleepTime 默认时间
// increment 自增时间
// getAttemptNumber 第几次重试
@Override public long computeSleepTime(Attempt failedAttempt) { long result = initialSleepTime + (increment * (failedAttempt.getAttemptNumber() - 1)); return result >= 0L ? result : 0L; }