如何从多个Flux<MyPojo>中得到一个Flux<MyPojo>?

How to get a Flux<MyPojo> from multiple Flux<MyPojo>?

如何从多个 Flux<MyPojo> 中得到一个 Flux<MyPojo>

在一个非常简单的例子中:

public Flux<MyPojo> question() {
    Flux<MyPojo> flux1 = getFluxMyPojoViaAPI();
    Flux<MyPojo> flux2 = repository.findAll();
    Flux<MyPojo> flux3 = getFluxMyPojoViaAnotherAPI();
    Flux<MyPojo> flux4 = etc();

    Flux<MyPojo> everythingTogetherAsFluxMyPojo = //how to achieve this please?
    return everythingTogetherAsFluxMyPojo;

我想知道如何从所有先前计算的 Flux<MyPojo>

中获取 Flux<MyPojo>

尝试了 zip 和那些相关的 API,最后得到了一个 Flux of Tuples。

请问有没有更简单更好的方法来从倍数 Flux<MyPojo> 中获得 Flux<MyPojo>

您可以使用 Flux.merge(Publisher<? extends I>... sources):

Flux<MyPojo> combined = Flux.merge(flux1, flux2, flux3, flux4)

Flux.concat(Publisher<? extends T>... sources):

Flux<MyPojo> combined = Flux.concat(flux1, flux2, flux3, flux4)

mergeconcat 之间的重要区别在于 merge 会同时订阅所有 fluxes,并在项目到达任何 flux 时发布它们,而 concat 会首先订阅第一个 flux 并发布它的项目直到它完成,然后订阅下一个 flux,等等