为了满足更加方便的配置,Retryer 类提供了许多可以配置的信息。
/**
* 默认配置测试
*/
public void defaultConfigTest() {
Retryer.<String>newInstance()
.condition(RetryConditions.hasExceptionCause())
.retryWaitContext(RetryWaiter.<String>retryWait(NoRetryWait.class).context())
.maxAttempt(3)
.listen(RetryListens.noListen())
.recover(Recovers.noRecover())
.callable(new Callable<String>() {
@Override
public String call() throws Exception {
System.out.println("called...");
throw new RuntimeException();
}
}).retryCall();
}
和下面的代码是等价的:
public void helloTest() {
Retryer.<String>newInstance()
.callable(new Callable<String>() {
@Override
public String call() throws Exception {
System.out.println("called...");
throw new RuntimeException();
}
}).retryCall();
}
重试触发的条件,可以指定多个条件。
默认为抛出异常。
重试等待的策略,可以指定多个。
默认为不做任何等待。
指定最大重试次数,包括第一次执行。
默认值:3 次。
指定重试的监听实现,默认为不做监听。
当重试完成之后,依然满足重试条件,则可以指定恢复的策略。
默认不做恢复。
待重试执行的方法。
触发重试执行。
所有的接口,都可以直接查看对应的子类实例。
基于替换的灵活性,用户可以实现接口,定义更符合自己业务的实现。