Project Reactor:可能误导性的错误处理文档

时间:2017-12-15 19:23:46

标签: spring project-reactor

我正在阅读有关错误处理的Reactor参考文档,似乎有些错误。例如,此部分关于fallback method

Flux.just("key1", "key2")
    .flatMap(k -> callExternalService(k)) 
    .onErrorResume(e -> getFromCache(k)); 

但是onErrorResume() lambda只接受一个参数e(错误可抛出)。如何引用k(助焊剂发出的先前值)?

文档中还有其他类似的代码段。我读错了吗? 或者如果文档确实不正确,我该如何处理这种情况:通过执行具有先前值的备用路径从错误中恢复?

1 个答案:

答案 0 :(得分:4)

是的,我认为您在文档中发现了一个错误。

如果您想使用RewriteRule ^(.*)$ $1/#do? [R,NE,L] k的调用必须发生在onErrorResume的参数内,如下所示:

flatMap

关于您的评论:不可能将值作为Flux.just("key1", "key2") .flatMap(k -> callExternalService(k) .onErrorResume(e -> getFromCache(k)) ); 方法的一部分进行处理,因为在处理值时可能不会发生错误。也许它发生在例如处理背压(即请求更多元素)或订阅时。