上一篇日志中,我们介绍了 Retryer 类
guava 重试工具库 -- Retryer
由于 Retryer 类构造方法参数较多,较为复杂,而使用 RetryerBuilder 要更加简洁明了,也是更加常用的方式
RetryerBuilder 的构造方法是 private 的,这也意味着我们不能通过 new 的方式直接创建 RetryerBuilder 对象
RetryerBuilder 提供了一个 static 方法:
public static <V> RetryerBuilder<V> newBuilder()
通过:
RetryerBuilder retryer = RetryerBuilder.newBuilder();
就可以创建一个 RetryerBuilder 了
通过 RetryerBuilder 提供的 build 方法就可以创建出一个 Retryer 对象了:
public Retryer<V> build()
Retryer 的构造方法的参数传递了所需要的所有重试策略,我们这里不做介绍
而 RetryerBuilder 提供了一系列方法用来指定具体的重试策略
所有的策略方法均会返回 this 对象,所以可以通过 . 连接多个策略
retryIfException
public RetryerBuilder<V> retryIfException()
只要抛出异常就进行重试
retryIfRuntimeException
public RetryerBuilder<V> retryIfRuntimeException()
只要抛出 RuntimeException
retryIfExceptionOfType
public RetryerBuilder<V> retryIfExceptionOfType(@Nonnull Class<? extends Throwable> exceptionClass)
抛出参数指定的异常类型才会重试
retryIfException
public RetryerBuilder<V> retryIfException(@Nonnull Predicate<Throwable> exceptionPredicate)
上一篇日志中介绍了 guava 提供的断言接口 Predicate 以及异常强大的断言工厂 Predicates,可以实现非常复杂的条件构造
guava 重试工具库 -- Retryer
这个方法就是以 Predicate 对象为参数的实现判断指定异常进行重试
retryIfResult
public RetryerBuilder<V> retryIfResult(@Nonnull Predicate<V> resultPredicate)
与 retryIfException 方法一样,这个方法也是以 Predicate 对象为参数的,他实现了通过返回值作为重试条件的策略
同样的,RetryerBuilder 也支持我们上一篇日志中所介绍的超时时长策略、停止重试策略、重试时间间隔策略、线程阻塞策略、拒绝断言策略、重试监听者
public RetryerBuilder<V> withRetryListener(@Nonnull RetryListener listener);
public RetryerBuilder<V> withWaitStrategy(@Nonnull WaitStrategy waitStrategy);
public RetryerBuilder<V> withStopStrategy(@Nonnull StopStrategy stopStrategy);
public RetryerBuilder<V> withBlockStrategy(@Nonnull BlockStrategy blockStrategy);
public RetryerBuilder<V> withAttemptTimeLimiter(@Nonnull AttemptTimeLimiter<V> attemptTimeLimiter);
欢迎关注微信公众号,以技术为主,涉及历史、人文等多领域的学习与感悟,每周三到七篇推文,只有全部原创,只有干货没有鸡汤

读书笔记
技术帖
龙潭书斋
技术分享
java
guava
retryer
重试
retryerbuilder
参数构造
策略