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, как избежать этого?