У меня проблема с WebClient
и reactor-extra
. Действительно, у меня есть следующий метод:
public Employee getEmployee(String employeeId) {
return webClient.get()
.uri(FIND_EMPLOYEE_BY_ID_URL, employeeId)
.retrieve()
.onStatus(HttpStatus.NOT_FOUND::equals, clientResponse -> Mono.empty())
.onStatus(HttpStatus::is5xxServerError, clientResponse -> Mono.error(new MyCustomException("Something went wrong calling getEmployeeById")))
.bodyToMono(Employee.class)
.retryWhen(Retry.onlyIf(ConnectTimeoutException.class)
.fixedBackoff(Duration.ofSeconds(10))
.retryMax(3))
.block();
}
Я обнаружил, что могу использовать retryWhen(Retry.onlyIf(...))
, потому что я хочу повторить попытку, только если выдается ConnectTimeoutException
. Я нашел это решение из этого сообщения: spring webclient: повторить попытку с отсрочкой при определенной c ошибке
Но в последней версии reactor
следующий метод стал устаревшим:
public final Mono<T> retryWhen(Function<Flux<Throwable>, ? extends Publisher<?>> whenFactory)
После нескольких часов поиска в Google я не нашел решения этого вопроса: есть ли альтернатива для retryWhen
и Retry.onlyIf
с последними версиями reactor
Спасибо за помощь!