【发布时间】:2018-06-12 21:18:34
【问题描述】:
我在相同的通量上使用 publishOn 和 subscribeOn,如下所示:
System.out.println("*********Calling Concurrency************");
List<Integer> elements = new ArrayList<>();
Flux.just(1, 2, 3, 4)
.map(i -> i * 2)
.log()
.publishOn(Schedulers.elastic())
.subscribeOn(Schedulers.parallel())
.subscribe(elements::add);
System.out.println("-------------------------------------");
虽然,当我同时使用两者时,日志中不会打印任何内容。 但是当我只使用 publishOn 时,我得到了以下信息日志:
*********Calling Concurrency************
[info] | onSubscribe([Synchronous Fuseable] FluxArray.ArraySubscription)
[info] | request(256)
[info] | onNext(1)
[info] | onNext(2)
[info] | onNext(3)
[info] | onNext(4)
[info] | onComplete()
-------------------------------------
publishOn 是否比 subscribeOn 更推荐?或者它比 subscribeOn 有更多的偏好?两者有什么区别,什么时候用哪个?
【问题讨论】:
-
stackoverflow.com/q/41939335/438319 对一个非常相似的问题的回答很好
标签: reactive-programming publish-subscribe project-reactor publisher reactive-streams