guava-retrying 源码解析(等待策略详解)

一、等待策略相关类:

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;
    }    

  

 

猜你喜欢

转载自www.cnblogs.com/shenqidu/p/10418976.html
今日推荐