Java 处理来自发布服务器的并行拖放数据
如何处理从Java 处理来自发布服务器的并行拖放数据,java,rx-java,project-reactor,reactive-streams,Java,Rx Java,Project Reactor,Reactive Streams,如何处理从发行商并行订阅的数据 我是否应该在员工池中循环订阅?当我在projectreactor中调用subscribe时,我只得到了一块数据。如何“耗尽所有” 如何确保每个工作人员接收不同的数据块 将每个数据块转换为任务,并将其提交给执行器。转换器可能如下所示: class Converter implements Subscriber<T> { final Executor executor; Subscription subscription; Con
发行商并行订阅的数据
我是否应该在员工池中循环订阅?当我在projectreactor
中调用subscribe时,我只得到了一块数据。如何“耗尽所有”
如何确保每个工作人员接收不同的数据块
将每个数据块转换为任务,并将其提交给执行器
。转换器可能如下所示:
class Converter implements Subscriber<T> {
final Executor executor;
Subscription subscription;
Converter(Executor executor) {
this.executor = executor;
}
@Override
public void onSubscribe(Subscription s) {
subscription = s;
s.request(1);
}
@Override
public void onNext(T data) {
executor.execute(()->process(data));
subscription.request(1);
}
...
void process(T o) {
...
}
}
类转换器实现订阅服务器{
最终执行人;
认购;
转换器(执行器执行器){
this.executor=执行人;
}
@凌驾
认购的公共无效(认购){
订阅=s;
s、 请求(1);
}
@凌驾
公共void onNext(T数据){
executor.execute(()->进程(数据));
认购请求书(1);
}
...
无效过程(TO){
...
}
}
在Project Reactor中,使用parallel()
操作符:
Flux.from(thePublisher) //if we don't assume publisher is already a Flux
.parallel() //instruct the Flux to divide work on "rails",
//but so far these rails are running on the same thread !
.runOn(Schedulers.parallel()) //now each rail runs on its own thread
.map(...).etc(...)
.sequential() //merge the rails back to a single sequence
//subscribe, or continue processing sequentially
RxJava 2非常相似,具有相同的并行运算符。请阅读以下内容: