导轨故障时,数据会在ParallelFlux中丢失

时间:2019-09-28 12:51:52

标签: error-handling parallel-processing project-reactor

我正在运行ParallelFlux,并且其中一条导轨发生故障。我无法“恢复”它甚至无法处理原本应该到达该轨道的事件

Flux.just(1, 2, 3, 4, 5, 6, 7, 8, 9)
    .parallel(4)
    .runOn(Schedulers.parallel())
    .doOnNext(e -> {System.out.println("test "+e); if (e % 2 == 0) throw new RuntimeException(e+":"+2);})
    .doOnNext(e -> {if (e % 3 == 0) throw new RuntimeException(e+":"+3);})
    .subscribe(
        goodNumber -> System.out.println("Good number "+goodNumber), 
        err -> System.out.println("Failed number "+err.getMessage()
    );

我想处理该范围内的所有数据,但是我想念6,7,8,因为它们的轨道被取消了。

我得到的结果是

test 2 test 4 test 3 test 1 Good number 1 test 5 Good number 5 test 9 Failed number 4:2 Failed number 2:2 Failed number 3:3 Failed number 9:3

并行工作并为每个导轨执行某种“ onErrorContinue”功能的正确方法是什么?

0 个答案:

没有答案