Я бы хотел сделать следующее, используя WebClient
из весеннего webflux:
- Вызов
endpoint1
- Если произойдет сбой с ожидаемой ошибкой, тогда
- вызов
endpoint2
и - повтор
endpoint1
только один раз
У меня так далеко:
webclient.get()
.uri("/endpoint1")
.retrieve()
.bodyToFlux(MyBody.class)
.retry(error -> {
if (error == expectedError) {
webclient.get()
.uri("/endpoint2")
.retrieve().block();
return true;
} else {
false;
});
Я не могу заблокировать при запросе endpoint2
, поскольку получаю следующую ошибку: block()/blockFirst()/blockLast() are blocking, which is not supported in thread
(я тоже не хотел бы блокировать).
Возможно, мне следует использовать retryWhen
, но я не совсемуверен, как его использовать.