Можно ли настроить 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 для получения дополнительных примеров.

Другие вопросы по тегам