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

问题描述 投票:0回答:1

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

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

onErrorResume() lambda只需要一个参数e(错误抛出)。 k(焊剂发出的先前值)如何在此处引用?

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

spring project-reactor
1个回答
4
投票

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

如果你想使用k,那么onErrorResume的调用必须发生在flatMap的参数内,如下所示:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.