Вы можете использовать retry(Predicate<? super Throwable> retryMatcher)
, который будет повторять операцию на основе условия выброса.
В приведенном ниже коде я возвращаю Mono.error, если данные, полученные от клиента, равны нулю, а затем на основев случае ошибки при повторной попытке вышеуказанная операция будет выполнена снова.
Вы также можете ограничить количество повторных попыток с помощью,
retry(long numRetries, Predicate<? super Throwable> retryMatcher)
final Flux<Data> flux = WebClient.create().get().uri("uri").exchange().flatMap(data -> {
if (data == null)
return Mono.error(new RuntimeException());
return Mono.just(data);
}).retry(throwable -> throwable instanceof RuntimeException)
.flatMap(response -> response.bodyToMono(Data.class)).flux();