【发布时间】:2020-04-01 20:11:39
【问题描述】:
我正在尝试将我的单声道拆分为其他单独的单声道,这些单声道将在不同线程上处理相同的数据输入数据。
public Mono<String> process() {
Mono<String> someString = ... // fetching data from API
someString
.publishOn(Schedulers.fromExecutorService(Executors.newFixedThreadPool(2)))
.map(String::toLowerCase)
.subscribe(this::saveLowercase);
someString
.publishOn(Schedulers.fromExecutorService(Executors.newFixedThreadPool(2)))
.map(String::toUpperCase)
.subscribe(this::saveUpperCase);
return someString;
}
我在日志中看到我获取了 3 次数据,因为每个订阅调用都从 API 获取数据。我想使用 .cache() 方法,但我想知道一些新的更好的方法只调用一次 API 并处理乘以这些数据?如果 Reactor 不能这样做,我可以将 Reactor 交换为 RxJava。
【问题讨论】:
-
我认为您需要退后一步,阅读响应式编程的基础知识。订阅者是发起呼叫的人、Web 客户端、GUI 或日程安排等。您几乎从未像在此处所做的那样在自己的应用程序中订阅。
标签: rx-java2 spring-webflux project-reactor