比方说,我有一个简单的助焊剂,该助焊剂可以完成某项工作,并且有状态要重新使用。
<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()
语句之后,那么它也可以正常工作。