Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我们可以多次发布流吗?_Java_Project Reactor - Fatal编程技术网

Java 我们可以多次发布流吗?

Java 我们可以多次发布流吗?,java,project-reactor,Java,Project Reactor,以下所有代码都不会打印任何内容。为什么? ConnectableFlux<Integer> publish = Flux.just(1) .publish(); ConnectableFlux<Integer> publish1 = Flux.just(2) .flatMap(x -> publish) .publish(); publish1.subscribe(System.out::println, Syst

以下所有代码都不会打印任何内容。为什么?

ConnectableFlux<Integer> publish = Flux.just(1)
        .publish();

ConnectableFlux<Integer> publish1 = Flux.just(2)
        .flatMap(x -> publish)
        .publish();

publish1.subscribe(System.out::println, System.out::println, System.out::println);
publish1.connect();
ConnectableFlux publish=Flux.just(1)
.publish();
ConnectableFlux publish1=流量。仅(2)
.flatMap(x->发布)
.publish();
publish1.subscribe(System.out::println,System.out::println,System.out::println);
publish1.connect();

ConnectableFlux publish1=Flux.just(2)
.publish()
.publish();
publish1.subscribe(System.out::println,System.out::println,System.out::println);
publish1.connect();

ConnectableFlux publish1=Flux.just(2)
.publish()
.doOnNext(System.out::println)
.publish();
publish1.subscribe(System.out::println,System.out::println,System.out::println);
publish1.connect();
不要忘记为每个
可连接流量

在所有这些示例中,都缺少
.connect
ion语句

对于第一种情况,要使其正常工作,我们还必须将
连接到第一个
发布
可连接流量

ConnectableFlux<Integer> publish = Flux.just(1)
        .publish();

ConnectableFlux<Integer> publish1 = Flux.just(2)
        .flatMap(x -> publish)
        .publish();

publish1.subscribe(System.out::println, System.out::println, System.out::println);
publish1.connect();
publish.connect();

在该示例中,我们使用了
.autoConnect()
运算符,在
.autoConnect(0)
的情况下,它只是
可连接流量#connect
的组合,并返回该值语句。在
.autoConnect(>0)
用于对初始源的延迟订阅,听起来像“当且仅当我们获得N订户时才连接到初始源”

流在使用后被消耗。这就是
connectableFlux
的工作方式。太棒了!谢谢阿吉安·奥勒:)
ConnectableFlux<Integer> publish1 = Flux.just(2)
        .publish()
        .doOnNext(System.out::println)
        .publish();

publish1.subscribe(System.out::println, System.out::println, System.out::println);
publish1.connect();
ConnectableFlux<Integer> publish = Flux.just(1)
        .publish();

ConnectableFlux<Integer> publish1 = Flux.just(2)
        .flatMap(x -> publish)
        .publish();

publish1.subscribe(System.out::println, System.out::println, System.out::println);
publish1.connect();
publish.connect();
ConnectableFlux<Integer> publish1 = Flux.just(2)
        .publish()
        .autoConnect() // or .autoConnect(0)
        .doOnNext(System.out::println)
        .publish();

publish1.subscribe(System.out::println, System.out::println, System.out::println);
publish1.connect();