将多个流量收集到一个

jobtbby3  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(499)

我想在我的spring引导服务中收集多个通量结果。我的方法:

private Flux<VMachineResourceResponse> getDataForPhysicalMachineProtection(
          ResourcesWrapper resources, UUID groupId) {

        Flux<VMachineResourceResponse> result = Flux.empty();
        resources
            .getHypervResources()
            .forEach(
                resource -> {
                  Flux<VMachineResourceResponse> protectedResourcesForAgentAndId =
                      hypervAgentService.getProtectedResourcesForAgentAndId(
                          groupId, resource.getAgentId());
                  result.mergeWith(protectedResourcesForAgentAndId); //maybe that way???
                });
return result;
      }

怎么做?

cs7cruho

cs7cruho1#

你应该把你的单子放在一张纸上 Flux ,那么 flatMap 再把每一个新的 Flux . 这个 flatMap 会自动将所有的东西“扁平化”为一个 Flux 下面的例子应该说明这个概念:

public Flux<String> getData() {

    final List<String> strings = new ArrayList<>();
    strings.add("Foo");
    strings.add("Bar");

    return Flux.fromIterable(strings)
            .flatMap(this::get);
}

private Flux<String> get(String s) {
    return Flux.just(s + "Bar", s + "Foo");
}

相关问题