当使用Reactor的mergeDelayError时,如果发出了多个错误,是否有方法可以获取所有错误,而不仅仅是第一个错误?
Flux.mergeDelayError(10,
Flux.fromStream(Stream.of(1, 2, 3))
.flatMap(i -> Mono.error(new Exception(i.toString()))),
Mono.just(1),
Mono.just(2))
.doOnError(error -> log.error("error, {}", error.getMessage()))
.collectList()
.flatMap(Mono::just) .block();
在上面的示例中,它只打印error 1
并退出,而不打印error 2
、error 3
1条答案
按热度按时间hm2xizp91#
我想这是不可能的。请注意,React流中的任何错误都被认为是终端事件。因此,当您的flux返回第一个错误时,它会终止而不会实际继续。DelayError只会等待其他发布者终止(成功或错误)。
另外,请注意,如果多个发布者抛出各自的异常,则React器将抛出特殊的CompositeException,该异常将 Package 单个发布者抛出的异常。