可以将重试配置为重试 null 吗?
Can a Retry be configured to retry on null?
我刚开始使用 resilience4j,想知道是否可以设置重试以重试空结果。这是一个例子:
Retry retry = Retry.ofDefaults("retry");
Retry.decorateSupplier(retry, () -> (String) null).get();
assertThat(retry.getMetrics().getNumberOfSuccessfulCallsWithoutRetryAttempt()).isEqualTo(0);
这失败了,因为返回 null 是可以的。是否可以配置空重试。
用你自己的 retryOnResultPredicate
创建自定义 RetryConfig
如果 result
是 null
:
returns true
RetryConfig customConfig = RetryConfig.custom()
.retryOnResult(response -> response == null)
.build();
然后在创建 Retry
实例时将其用作配置参数:
Retry retry = Retry.of("retry", customConfig);
Retry.decorateSupplier(retry, () -> (String) null).get();
assertThat(retry.getMetrics().getNumberOfSuccessfulCallsWithoutRetryAttempt()).isEqualTo(0);
另请参阅 resilience4j documentation 了解更多示例。
我刚开始使用 resilience4j,想知道是否可以设置重试以重试空结果。这是一个例子:
Retry retry = Retry.ofDefaults("retry");
Retry.decorateSupplier(retry, () -> (String) null).get();
assertThat(retry.getMetrics().getNumberOfSuccessfulCallsWithoutRetryAttempt()).isEqualTo(0);
这失败了,因为返回 null 是可以的。是否可以配置空重试。
用你自己的 retryOnResultPredicate
创建自定义 RetryConfig
如果 result
是 null
:
true
RetryConfig customConfig = RetryConfig.custom()
.retryOnResult(response -> response == null)
.build();
然后在创建 Retry
实例时将其用作配置参数:
Retry retry = Retry.of("retry", customConfig);
Retry.decorateSupplier(retry, () -> (String) null).get();
assertThat(retry.getMetrics().getNumberOfSuccessfulCallsWithoutRetryAttempt()).isEqualTo(0);
另请参阅 resilience4j documentation 了解更多示例。