retryWhile вызывая цикл для нежелательных http кодов у верблюда

Мне нужно продолжить, когда я получу http 404 и повторите попытку недоступного http erros. ниже мой код

onException(HttpOperationFailedException.class)
                    .onWhen(exchangeProperty(Exchange.EXCEPTION_CAUGHT).method(GET_STATUS_CODE).isEqualTo(404))
                    .logExhausted(false).logStackTrace(false).continued(true);

            // On 401 - Retry indefinitely using an exponential back-off -
            // up to 10 minutes
            onException(HttpOperationFailedException.class).retryWhile(exchange -> {
                int statusCode = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, HttpOperationFailedException.class)
                        .getStatusCode();

                if (statusCode == 401 || statusCode == 502 || statusCode == 503 || statusCode == 504) {
                    return true;
                }
                return false;
            }).redeliveryDelay(TimeUnit.SECONDS.toMillis(5)).useExponentialBackOff()
                    .maximumRedeliveryDelay(TimeUnit.MINUTES.toMillis(10)).maximumRedeliveries(-1)
                    .retryAttemptedLogLevel(LoggingLevel.WARN)
                    .log(LoggingLevel.ERROR, "call failed on API").to(ErrorRoute.ROUTE_ENDPOINT);

но повторная попытка происходит для http 404 также, если API возвращает 502/503 в первой попытке, а затем 404 при повторной попытке. повторная попытка продолжается 404, как избежать этого?

0 ответов

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