public class MyClientRetryPredicate implements RetryPredicate {
@Override
public boolean test(Throwable t) {
if (t instanceof HttpClientResponseException e) {
return switch (e.getStatus()) {
case UNPROCESSABLE_ENTITY, BAD_REQUEST, GATEWAY_TIMEOUT, OK -> false;
default -> true;
};
}
if (t instanceof ResponseClosedException) {
return true;
}
if (t instanceof HttpClientException hce) {
return !(hce.getCause() instanceof CodecException);
}
return true;
}
}
< /code>
Я не мог переопределить это поведение с помощью декодера Acustom или глобального обработчика исключений. < /p>
Какой лучший способ обойти это при использовании @Client
Этот клиент Micronaut возвращает mono.empty () на ответе 404, что означает, что он не запускает повторную попытку выстраивания схемы < /p> [code]@Client("my-client") public interface RcsCapabilityClient { String PATH = "/internal/v1/something";
@Get(PATH) @CircuitBreaker(attempts = "${my-client-circuitBreaker.attempts}", delay = "${my-client-clients.circuitBreaker.delay}", maxDelay = "${my-client-clients.circuitBreaker.maxDelay}", reset = "${my-client-clients.circuitBreaker.reset}", predicate = MyClientRetryPredicate.class) Mono getSomething(); } [/code] Давный класс предиката [code]public class MyClientRetryPredicate implements RetryPredicate { @Override public boolean test(Throwable t) { if (t instanceof HttpClientResponseException e) { return switch (e.getStatus()) { case UNPROCESSABLE_ENTITY, BAD_REQUEST, GATEWAY_TIMEOUT, OK -> false; default -> true; }; }
if (t instanceof ResponseClosedException) { return true; } if (t instanceof HttpClientException hce) { return !(hce.getCause() instanceof CodecException); } return true; } } < /code> Я не мог переопределить это поведение с помощью декодера Acustom или глобального обработчика исключений. < /p> Какой лучший способ обойти это при использовании @Client [/code]? Спасибо