为什么错误处理不适用于可重用流量?

时间:2020-02-19 20:01:28

标签: java project-reactor

比方说,我有一个简单的助焊剂,该助焊剂可以完成某项工作,并且有状态要重新使用。

<li><a href="./../tasks.html">Post Task</a></li>

如果我立即订阅此通量,则错误处理将像灵符一样工作。 但是,当我重新使用此流量并订阅两次时,它将引发ErrorCallbackNotImplemented。

Flux<Object> flux = Flux.empty()
    .switchIfEmpty(Mono.error(new RuntimeException("asdf")))
    .doOnError(t -> log.info("Got error {}", t.getMessage()))
    .doOnNext(a -> log.info("bla: {}", a))
    .cache();

问题:是否可以重复使用错误处理程序(而无需将其提取到方法中)? 还是我每次分支都必须指定它?我必须知道的其他任何错误处理细节

编辑:经过进一步调查,我意识到这是由于// reactor.core.Exceptions$ErrorCallbackNotImplemented: java.lang.RuntimeException: asdf flux.doOnNext(a -> log.info("Doing next")) .subscribe(); flux.doOnNext(a -> log.info("Doing next")) .subscribe(); 而引起的。看起来如果我将.cache()放在.doOnError()语句之后,那么它也可以正常工作。

0 个答案:

没有答案