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

Project Reactor: possibly misleading documentation about error handling

我正在阅读有关错误处理的 Reactor 参考文档,似乎有些地方不对。例如本节关于 fallback method:

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

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

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

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

如果你想使用 konErrorResume 的调用必须发生在 flatMap 的参数内部,如下所示:

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

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