Spring 5 WebFlux 中如何正确处理 Mono 返回值并获取数据?

Spring 5 WebFlux 中如何正确处理 Mono 返回值并获取数据?

spring 5 webflux 中返回 mono 的正确方法

在 spring 5 webflux 中,处理 http 请求并返回 mono 值非常常见。然而,有时可能需要返回请求从 mono 流中获取的数据。在这种情况下,可以将 mono 流转换成 flux 流,然后使用 subscribeon() 方法将操作提交到另一个调度器线程。

以下是如何实现此操作:

  1. /** * 模拟服务端 * @param token * @param bodyMap * @return */public Mono doPostAndSaveList(String token, Map bodyMap) { log.info("进入doPost方法"); return WebClient.create(baseUrl) .post() .uri(uriBuilder -> uriBuilder.path(uri) .queryParam("access_token", token) .build()) .bodyValue(bodyMap) .retrieve() .bodyToMono(JSONObject.class) .subscribeOn(Schedulers.elastic()) .flatMap(jsonObject -> { String groupsStr = jsonObject.getString("group_chat_list"); log.info("groupsStr:{}", groupsStr); List groupListResponses = null; JSONArray jsonObjectJSONArray = jsonObject.getJSONArray("group_chat_list"); if (jsonObjectJSONArray != null) { // 此处可对 JSONArray 进行进一步处理 return Mono.just(jsonObjectJSONArray); } else { return Mono.empty(); } });}

登录后复制

在这个示例中:

创建 webclient 并配置请求的 uri 和参数。设置请求正文。调用 retrieve() 方法检索响应。将响应转换为 mono,指定在 elastic 调度器线程上执行此操作。在 flatmap() 方法中提取目标数据并将其包装到 mono 中。

通过使用 mono.just(),可以将 jsonarray 转换成 mono 流。完成此操作后,无需再调用 subscribe() 方法,因为 mono 流中的数据将在返回 mono 时准备好使用。

以上就是Spring 5 WebFlux 中如何正确处理 Mono 返回值并获取数据?的详细内容,更多请关注【创想鸟】其它相关文章!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

点点赞赏,手留余香

给TA打赏
共0人
还没有人赞赏,快来当第一个赞赏的人吧!
    编程技术

    学 Java 到就业需要多久?从零基础到入职 Java 开发的学习时间分析

    2025-3-6 20:44:50

    编程技术

    Spring 中的 bean 创建:FactoryBean 和直接实例化有什么区别?

    2025-3-6 20:44:57

    0 条回复 A文章作者 M管理员
    欢迎您,新朋友,感谢参与互动!
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    私信列表
    搜索