我正在阅读有关错误处理的Reactor参考文档,似乎有些错误。例如,此部分关于fallback method:
Flux.just("key1", "key2")
.flatMap(k -> callExternalService(k))
.onErrorResume(e -> getFromCache(k));
但是onErrorResume()
lambda只接受一个参数e
(错误可抛出)。如何引用k
(助焊剂发出的先前值)?
文档中还有其他类似的代码段。我读错了吗? 或者如果文档确实不正确,我该如何处理这种情况:通过执行具有先前值的备用路径从错误中恢复?
答案 0 :(得分:4)
是的,我认为您在文档中发现了一个错误。
如果您想使用RewriteRule ^(.*)$ $1/#do? [R,NE,L]
,k
的调用必须发生在onErrorResume
的参数内,如下所示:
flatMap
关于您的评论:不可能将值作为Flux.just("key1", "key2")
.flatMap(k -> callExternalService(k)
.onErrorResume(e -> getFromCache(k))
);
方法的一部分进行处理,因为在处理值时可能不会发生错误。也许它发生在例如处理背压(即请求更多元素)或订阅时。