You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Spring Webflux顺序调用多API无需subscribe/block转Flux

解决方案

你不需要手动调用subscribe或block读取结果,直接用响应式流算子将所有接口调用的Mono拼接为Flux返回即可,修改后的实现如下:

private Flux<SeasonsDto> getSeasonsInfo(List<HuntsSeasonsMapping> l2, String seasonsUrl) {
    return Flux.fromIterable(l2)
            // 展开每个HuntsSeasonsMapping对应的SeasonsJsonDto列表
            .flatMapIterable(s -> huntsSeasonsProcessor.appendSeaosonToJson(s.getSeasonsRef()))
            // 按顺序调用第三方接口,concatMap保证前一个请求完成才发起下一个
            .concatMap(sjdto -> new SeasonsAdapter("http://localhost:8087/")
                    .callToSeasonsAPI(sjdto.getSeasonsRef()));
}

说明

  • 整个流程完全符合响应式编程规范,无任何阻塞或手动订阅操作
  • 如果你不需要严格的调用顺序,想要提升请求吞吐量,可以将concatMap替换为flatMap,允许并发发起接口调用
  • 最终返回的Flux<SeasonsDto>可直接交给上层使用,比如WebFlux Controller可直接将该Flux作为接口返回值,Spring框架会自动完成订阅和结果输出。

内容的提问来源于stack exchange,提问作者user1111880

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:15:02