java Flux.mergeDelayError获取所有错误

xoshrz7s  于 2023-04-10  发布在  Java
关注(0)|答案(1)|浏览(99)

当使用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 2error 3

hm2xizp9

hm2xizp91#

我想这是不可能的。请注意,React流中的任何错误都被认为是终端事件。因此,当您的flux返回第一个错误时,它会终止而不会实际继续。DelayError只会等待其他发布者终止(成功或错误)。
另外,请注意,如果多个发布者抛出各自的异常,则React器将抛出特殊的CompositeException,该异常将 Package 单个发布者抛出的异常。

相关问题