Настройте RetryTemplate для проверки всех кодов ошибок, кроме 404 - PullRequest
1 голос
/ 30 сентября 2019

Я немного новичок в Spring Boot и у меня возникают проблемы с настройкой моего RetryTemplate для повтора всех неудачных кодов исключений, кроме 404. Ниже мой код:

@Bean
public RetryTemplate createRetryTemplate() {
    SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
    retryPolicy.setMaxAttempts(maxAttempts);

    UniformRandomBackOffPolicy backOffPolicy = new UniformRandomBackOffPolicy();
    backOffPolicy.setMinBackOffPeriod((long) minBackOffPeriod);
    backOffPolicy.setMaxBackOffPeriod(maxBackOffPeriod);

    RetryTemplate retryTemplate = new RetryTemplate();
    retryTemplate.setRetryPolicy(retryPolicy);
    retryTemplate.setBackOffPolicy(backOffPolicy);
    return retryTemplate;
}

Я понимаю, что мне нужно создатьполитики, но я не уверен, как это сделать. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 30 сентября 2019

Я бы попытался использовать ExceptionClassifierRetryPolicy для определения типа сгенерированного исключения и возврата различных политик повторных попыток, исходя из этого:

class HttpStatusRetryPolicy extends ExceptionClassifierRetryPolicy {
    public HttpStatusRetryPolicy() {
        final NeverRetryPolicy doNotRetry = new NeverRetryPolicy();
        final SimpleRetryPolicy simpleRetryPolicy = new SimpleRetryPolicy();
        // configure your RetryPolicy here:
        // retryPolicy.setMaxAttempts(maxAttempts);
        // ...
        this.setExceptionClassifier(throwable -> {
            if (throwable instanceof HttpClientErrorException.NotFound) { // 404
                return doNotRetry;
            }
            return simpleRetryPolicy;
        });
    }
}
...