使用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 中,保持顺序不乱
    }
}
相关推荐
paopaokaka_luck1 天前
基于springboot3+vue3的文山民族文化资源展示与推广平台(协同过滤算法、Echarts 图形化分析)
java·前端·spring boot·学习·echarts
eralong1 天前
Java IO 与 NIO
java·后端
Jesse_EC1 天前
我给消息推送加了 Publisher Confirm,然后亲手引入了一个竞态
java
S3rein1 天前
JAVA多线程手撕
java·多线程
用户8181870627461 天前
第7章 死锁排查实录:jstack定位死锁的完整流程
java·后端
喵同志不止步于码农1 天前
Java Caffeine 快速入门
java·开发语言·后端·并发·缓存一致性
Java成神之路-1 天前
Java 并发灵魂拷问:notify/signal 唤醒顺序是规范还是实现?
java
Java牛马1 天前
Caffeine 缓存及其应用相关总结
java·redis·缓存·caffeine·数据一致性·本地缓存
一只叫煤球的猫1 天前
Spring AI 2.0 源码解析(三):ChatClient 的 Fluent API 如何构建请求?
java·后端·面试
软件开发JR1 天前
基于Web的足球青训俱乐部管理后台系统的设计与开发
java·前端·spring boot·毕业设计