使用WebClient结合Flux实现并行调用多个互不相关的http请求,并使结果按照调用顺序返回

使用WebClient结合Flux实现并行调用多个互不相关的http请求,并使结果按照调用顺序返回

java 复制代码
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;
import reactor.core.publisher.Flux;

import java.util.List;

@Service
public class WebClientService {

    private final WebClient webClient;

    public WebClientService(WebClient.Builder webClientBuilder) {
        this.webClient = webClientBuilder.baseUrl("http://example.com").build();
    }

    public Mono<List<String>> makeDynamicRequests(List<String> endpoints) {
        // 发起 HTTP 请求并收集结果到 List
        return Flux.fromIterable(endpoints)
                .flatMap(endpoint -> webClient.get().uri(endpoint).retrieve().bodyToMono(String.class))
                .collectList(); // 收集结果到 List 中,保持顺序不乱
    }
}
相关推荐
yaoxin5211233 分钟前
388. Java IO API - 处理事件
java·服务器·数据库
JAVA学习通4 分钟前
AI 工作流编排系统的任务拆分、重试与观测:2026年工程实践深度解析
java·人工智能·spring
凤山老林10 分钟前
27-Java final 关键字
java·开发语言
少许极端10 分钟前
算法奇妙屋(四十九)-贡献法
java·算法·leetcode·贡献法
卷毛的技术笔记12 分钟前
从零到一:深入浅出分布式锁原理与Spring Boot实战(Redis + ZooKeeper)
java·spring boot·redis·分布式·后端·面试·java-zookeeper
天空属于哈夫克315 分钟前
行为审计与全链路追踪:私域自动化执行的安全性设计
java·运维·微服务
skilllite作者16 分钟前
SkillLite 技术演进笔记:Workspace、沙箱与进化
java·开发语言·前端·笔记·安全·agentskills
乐观勇敢坚强的老彭29 分钟前
C++信奥洛谷循环章节练习题
java·c++·算法
菜菜小狗的学习笔记30 分钟前
八股(八)Maven、Git、Docker
java·maven
他是龙55131 分钟前
66:Java安全&SPEL表达式&SSTI模版注入&XXE&JDBC&MyBatis注入
java·安全·mybatis