Reactor 多次使用 doOnNext

Reactor use doOnNext multiple times

我试图从 here 中更改一些反应器样本,但我对我得到的行为有点困惑。

所以首先我这样编码:

    EmitterProcessor<String> stream = EmitterProcessor.<String>create().connect();
    Flux<String> flux = stream
            .doOnNext(s -> System.out.println("1 " + s))
            .doOnNext(s -> System.out.println("2 " + s));
    flux.subscribe();
    stream.onNext("Hello");

此代码按预期打印两行:

1 Hello
2 Hello

但是如果我添加一个中间变量假装我从某种方法或为了可读性得到它代码开始表现不同。

    EmitterProcessor<String> stream = EmitterProcessor.<String>create().connect();
    Flux<String> flux = stream
            .doOnNext(s -> System.out.println("1 " + s));
    flux .doOnNext(s -> System.out.println("2 " + s));
    flux.subscribe();
    stream.onNext("Hello");

所以对于上面的代码我只得到一行,即:

1 Hello

任何人都可以解释这种行为吗?

感谢 Stephane Maldini,我意识到 Flux 是不可变的,每个操作都会产生不同的流。 讨论是here