1

我刚开始使用resilience4j,想知道是否可以设置重试以重试空结果。这是一个例子:

Retry retry = Retry.ofDefaults("retry");
Retry.decorateSupplier(retry, () -> (String) null).get();
assertThat(retry.getMetrics().getNumberOfSuccessfulCallsWithoutRetryAttempt()).isEqualTo(0);

这失败了,因为返回 null 是可以的。是否可以在 null 上配置重试。

4

1 回答 1

2

RetryConfig使用您自己的自定义创建一个retryOnResultPredicate返回trueif resultis的自定义null

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

另请参阅弹性 4j 文档以获取更多示例。

于 2019-07-22T17:36:11.677 回答