Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Error handling 当轨道发生故障时,数据在并行流量中丢失_Error Handling_Parallel Processing_Project Reactor - Fatal编程技术网

Error handling 当轨道发生故障时,数据在并行流量中丢失

Error handling 当轨道发生故障时,数据在并行流量中丢失,error-handling,parallel-processing,project-reactor,Error Handling,Parallel Processing,Project Reactor,我正在运行一个并行通量,其中一个轨道出现故障。我无法“恢复”它,甚至无法处理本应发送到该铁路的事件 Flux.just(1,2,3,4,5,6,7,8,9) .平行(4) .runOn(Schedulers.parallel()) .doOnNext(e->{System.out.println(“test”+e);如果(e%2==0)抛出新的运行时异常(e+“:”+2);}) .doOnNext(e->{if(e%3==0)抛出新的运行时异常(e+“:”+3);}) .订阅( goodNumb

我正在运行一个并行通量,其中一个轨道出现故障。我无法“恢复”它,甚至无法处理本应发送到该铁路的事件

Flux.just(1,2,3,4,5,6,7,8,9)
.平行(4)
.runOn(Schedulers.parallel())
.doOnNext(e->{System.out.println(“test”+e);如果(e%2==0)抛出新的运行时异常(e+“:”+2);})
.doOnNext(e->{if(e%3==0)抛出新的运行时异常(e+“:”+3);})
.订阅(
goodNumber->System.out.println(“好数字”+goodNumber),
err->System.out.println(“失败的号码”+err.getMessage()
);
我想处理范围内的所有数据,但我错过了6,7,8,因为它们的轨道被取消了

我得到的结果是


测试2
测试4
测试3
测试1
好数字1
测试5
好数字5
测试9
失败的数字4:2
失败的数字2:2
失败数字3:3
失败号码9:3


什么是并行工作的正确方法,并为每个轨道执行“OneRorContinue”功能?

不幸的是,我认为这里唯一的答案是“你不能”。没有
OneRorMap()
OneRorContinue()
对于
ParallelFlux
,所以唯一的选择是捕获
doOnNext()方法中可能发生的任何异常,并确保它在该消费者中得到处理(所以不会传播到反应链上)。谢谢@MichaelBerry。这和我在[“并行运算符的内部没有留下太多选项”。虽然这是关于RxJava的,但看起来这两个项目有很多共同点是的,它们都符合反应流规范,因此它们将非常相似。不幸的是,我相信这里唯一的答案是“你不能”。没有
onErrorMap()
onErrorContinue()
用于
ParallelFlux
,所以唯一的选择是捕获您的
doOnNext()
方法中可能发生的任何异常,并确保它在该消费者中得到处理(所以不会向上传播反应链)。谢谢@MichaelBerry。这符合我在[”中找到的答案虽然这是关于RxJava的,但看起来这两个项目有很多共同点是的,它们都符合反应流规范,因此它们将非常相似。