#spring-webflux #reactor
#spring-webflux #реактор
Вопрос:
Рассмотрим, что у меня есть следующий код:
Flux.fromIterable(List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11))
.flatMap(integer -> {
if (integer == 5) {
throw new RuntimeException("error");
}
return just(Tuples.of(integer, new Random().nextInt()));
})
.onErrorContinue((throwable, o) -> just(Tuples.of(o, 0)))
.log()
.subscribe();
какие результаты:
onSubscribe([Fuseable] FluxContextStart.ContextStartSubscriber)
request(unbounded)
onNext([1,-1752848133])
onNext([2,-1719473285])
onNext([3,819220275])
onNext([4,-725013418])
onNext([6,-1693809308])
onNext([7,1457499883])
onNext([8,-740589679])
onNext([9,1718349574])
onNext([10,-861794538])
onNext([11,1016444064])
onComplete()
Есть ли способ, чтобы я мог восстановить 5
значение по умолчанию вместо его удаления?
Ответ №1:
См onErrorReturn()
. и onErrorResume()
. Вероятно, вам нужно использовать его внутри a flatMap()
на внутреннем Mono
по значению, чтобы избежать потери остальных исходных Flux
значений.