首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WebFlux中,无功控制器onErrorResume不工作

在WebFlux中,无功控制器onErrorResume不工作
EN

Stack Overflow用户
提问于 2021-11-18 13:34:20
回答 1查看 41关注 0票数 0

WebFlux在GET控制器中,我需要检查与mongo db的连接,以从Kubernates的角度验证活动,但当我断开db连接时,代码无法进入onErrorResume。为什么?可能的解决方案?

代码语言:javascript
复制
@RequestMapping("/liveness-for-kubernates/{id}")
@ResponseBody
public Mono<ResponseEntity<String>> livenessForKubernates(@PathVariable @NotBlank String id) {
    return Mono.just(id)
            .map(golamService::findById)
            .map(result -> new ResponseEntity<String>("UP", HttpStatus.OK))
            .onErrorResume(
                    throwable -> Mono.just(new ResponseEntity<String>("DOWN", HttpStatus.OK)));
}
EN

回答 1

Stack Overflow用户

发布于 2021-11-18 13:48:13

findById是导致Mono发布程序的异步、非阻塞操作。因此,您应该将其包装到flatmap中,而不是map

代码语言:javascript
复制
return Mono.just(id)
            .flatmap(golamService::findById)
            .map(result -> new ResponseEntity<String>("UP", HttpStatus.OK))
            .onErrorResume(throwable -> Mono.just(new ResponseEntity<String>("DOWN", HttpStatus.OK)));

map用于同步、非阻塞、一对一转换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70020803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档