Java 分散聚集:组合一组单声道<;列表<;项目>&燃气轮机;变成单声道<;列表<;项目>&燃气轮机;

Java 分散聚集:组合一组单声道<;列表<;项目>&燃气轮机;变成单声道<;列表<;项目>&燃气轮机;,java,spring,reactive-programming,java-9,spring-webflux,Java,Spring,Reactive Programming,Java 9,Spring Webflux,我是否可以将Mono数据源列表合并为一个包含所有项的Mono而不阻塞 在我的JDK 9 Spring Boot 2中的Lombok散射聚集应用程序中,此阻塞版本起作用: private Mono<List<Item>> gather(List<Mono<List<Item>>> data) { return Mono.just( data.stream().map(m -> m.block())

我是否可以将
Mono
数据源列表合并为一个包含所有项的
Mono
而不阻塞

在我的JDK 9 Spring Boot 2中的Lombok散射聚集应用程序中,此阻塞版本起作用:

    private Mono<List<Item>> gather(List<Mono<List<Item>>> data) {
        return Mono.just( data.stream().map(m -> m.block())
                .flatMap(List::parallelStream).collect(Collectors.toList()));
    }

假设您有两个单声道源,其中有一个字符串列表

Mono<List<String>> listMono1 = Mono.just(Arrays.asList("1","3","5","7","9","11"));
Mono<List<String>> listMono2 = Mono.just(Arrays.asList("2","4","6","8","10","12"));
因此,您必须修改listMono1和listMono2,以便它们发出列表的各个元素,然后合并它们。为此,您可以使用它来帮助您从列表中发出所有元素。因此,最后您将得到如下组合列表:

Flux.merge(listMono1.flatMapMany(Flux::fromIterable),listMono2.flatMapMany(Flux::fromIterable)).collectList();

希望这是你最终想要的

?您是否在考虑
Flux.merge
,@nullpointer?我期待着类似合并操作的东西,但我还没有找到一种方法。
Flux.merge(listMono1, listMono2).collectList();
Flux.merge(listMono1.flatMapMany(Flux::fromIterable),listMono2.flatMapMany(Flux::fromIterable)).collectList();