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

Sok*_*lov 0 spring project-reactor

我正在阅读有关错误处理的 Reactor 参考文档,但似乎有些错误。例如本节关于回退方法

Flux.just("key1", "key2")
    .flatMap(k -> callExternalService(k)) 
    .onErrorResume(e -> getFromCache(k)); 
Run Code Online (Sandbox Code Playgroud)

但是onErrorResume()lambda 只接受一个参数e(可抛出错误)。如何k(由通量发射前值),此处引用?

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

Jen*_*der 5

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

如果你想使用k的呼叫onErrorResume必须发生的说法里面flatMap,像这样:

Flux.just("key1", "key2")
    .flatMap(k -> callExternalService(k)
            .onErrorResume(e -> getFromCache(k))
    );
Run Code Online (Sandbox Code Playgroud)

关于您的评论:不可能将值作为方法的一部分进行处理,onErrorXXX因为在处理值时可能不会发生有问题的错误。例如,它可能发生在处理背压(即请求更多元素)或订阅时。