Можно ли настроить Retry для повторной попытки с нулевым значением?
Я только начинаю с resilience4j, и мне было интересно, можно ли настроить повторную попытку, чтобы повторить нулевые результаты. Вот пример:
Retry retry = Retry.ofDefaults("retry");
Retry.decorateSupplier(retry, () -> (String) null).get();
assertThat(retry.getMetrics().getNumberOfSuccessfulCallsWithoutRetryAttempt()).isEqualTo(0);
Это терпит неудачу, потому что возвращение нулевого в порядке. Можно ли настроить повтор на ноль.
1 ответ
Решение
Создать кастом RetryConfig
с вашим собственным retryOnResultPredicate
это возвращает true
если result
является 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);
См. Также документацию resilience4j для получения дополнительных примеров.