使用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 中,保持顺序不乱
    }
}
相关推荐
lang2015092820 分钟前
从零开始掌握 Logback:Java 日志框架的“Hello World”实战指南
java·单元测试·logback
lang2015092829 分钟前
Logback 过滤器深度指南:从“三值逻辑”到高性能拦截
java·网络·logback
左左右右左右摇晃38 分钟前
Java 对象:创建方式与内存回收机制
java·笔记
JMchen12342 分钟前
企业级图表组件库完整实现
android·java·经验分享·笔记·canvas·android-studio
java1234_小锋9 小时前
Java高频面试题:Redis的Key和Value的设计原则有哪些?
java·redis·面试
iPadiPhone9 小时前
流量洪峰下的数据守护者:InnoDB MVCC 全实现深度解析
java·数据库·mysql·面试
Nuopiane9 小时前
关于C#/Unity中单例的探讨
java·jvm·c#
win x9 小时前
JVM类加载及双亲委派模型
java·jvm
毕设源码-赖学姐9 小时前
【开题答辩全过程】以 滑雪场租赁管理系统的设计与实现为例,包含答辩的问题和答案
java
Javatutouhouduan9 小时前
SpringBoot整合reids:JSON序列化文件夹操作实录
java·数据库·redis·html·springboot·java编程·java程序员