【问题标题】:How to combine two CompletableFuture lists of custom objects and return a flux object?如何组合两个自定义对象的 CompletableFuture 列表并返回一个通量对象?
【发布时间】:2021-06-20 17:06:15
【问题描述】:

我是 Reactive Java 的新手,我收到了两个 api 请求,它们返回两个 CompletableFuture,其中包含两个自定义对象 A 列表。我需要以某种方式组合这些,序列化对象,创建另一个自定义对象 B 的新列表一个字段具有序列化的 A 对象,并将其作为一个 Flux 对象返回。我一直在尝试 s:thing 这样的东西,但它不起作用。

CompletableFuture<List<ResponseModels.A>> list1 = api.getListOfObjects();
CompletableFuture<List<ResponseModels.A>> list2 = api.getListOfOtherObjects();

CompletableFuture<ResponseModels.B> l = list1.thenApply(list1Objects -> list2.thenApply(list2Objects -> {
                        List<String> list1OfStrings = fop.stream().map(otcPaymentResultDTO -> JsonUtils.gsonFullBody.toJson(ResponseModels.B.builder()                                .payload(JsonUtils.gsonFullBody.toJson(list1Objects))
                                )).collect(Collectors.toList());
                        List<String> list2OfStrings = dvp.stream().map(otcDvPDTO -> JsonUtils.gsonFullBody.toJson(ResponseModels.B.builder()
                                .payload(JsonUtils.gsonFullBody.toJson(list2Objects)))).collect(Collectors.toList());
                        List<String> combinedList = Stream.concat(list1OfStrings.stream(), list2OfStrings.stream())
                                .collect(Collectors.toList());
                        return combinedList;
                    })));
return Flux.just(l);


【问题讨论】:

    标签: java project-reactor


    【解决方案1】:

    您可以使用Mono.fromFutureCompletableFuture 转换为Mono。 下面的代码将返回Flux&lt;ResponseModels.B&gt;

    Flux<ResponseModels.A> aFlux = Mono.fromFuture(() -> api.getListOfObjects())
                                       .flatMapIterable(x -> x);
    Flux<ResponseModels.A> bFlux = Mono.fromFuture(() -> api.getListOfOtherObjects())
                                       .flatMapIterable(x -> x);
    
    
    return Flux.merge(aFlux, bFlux)
               .map(aModel -> /* json transformation logic here */);
    

    【讨论】:

      猜你喜欢
      • 2018-11-14
      • 2018-04-21
      • 2021-02-16
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多