使用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 中,保持顺序不乱
    }
}
相关推荐
jacsonchen10 小时前
【MySQL】环境变量配置
java
番茄去哪了10 小时前
黑马点评实战篇千字总结
java·分布式·面向对象编程
pupudawang10 小时前
Java进阶——IO 流
java·开发语言·python
逆境不可逃10 小时前
【从零入门23种设计模式19】行为型之观察者模式
java·开发语言·算法·观察者模式·leetcode·设计模式·动态规划
一只鹿鹿鹿10 小时前
研发中心数据安全管理规定(文件)
java·运维·开发语言·数据库·后端
旺旺仙贝呦10 小时前
Java常用注解
java·开发语言·python
忧郁缭绕10 小时前
Spring Boot Pf4j模块化能力设计思考
java·spring boot·后端
天若有情67310 小时前
C++设计模式:tur函数——让对象自我裁决的条件选择器
java·c++·设计模式
无级程序员10 小时前
k8s部署nacos 3.1.1服务,java.net.UnknownHostException问题终极解决方案
java·nacos·kubernetes
C++chaofan10 小时前
JUC 并发编程:不可变对象、享元模式与自定义连接池 学习笔记
java·享元模式·并发编程·连接池·juc·不可变对象