ori*_*rab 10 java spring spring-retry
我有一个具有以下签名的方法:
public Optional<String> doSomething() {
...
}
Run Code Online (Sandbox Code Playgroud)
如果我得到一个空的,Optional我想重试这个方法,只有在 3 次后才返回空的Optional。
我查看并找到了Retryablespring 注释,但它似乎只适用于异常。
如果可能的话,我想为此使用一个库,并避免:
我一直在重试中使用故障安全构建。您可以根据谓词和异常进行重试。
您的代码如下所示:
private Optional<String> doSomethingWithRetry() {
RetryPolicy<Optional> retryPolicy = new RetryPolicy<Optional>()
.withMaxAttempts(3)
.handleResultIf(result -> {
System.out.println("predicate");
return !result.isPresent();
});
return Failsafe
.with(retryPolicy)
.onSuccess(response -> System.out.println("ok"))
.onFailure(response -> System.out.println("no ok"))
.get(() -> doSomething());
}
private Optional<String> doSomething() {
return Optional.of("result");
}
Run Code Online (Sandbox Code Playgroud)
如果可选项不为空,则输出为:
predicate
ok
Run Code Online (Sandbox Code Playgroud)
否则看起来像:
predicate
predicate
predicate
no ok
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5402 次 |
| 最近记录: |