使用RxJava的生产者 - 消费者

时间:2016-09-29 11:21:33

标签: java rx-java

我试图用rx风格的消费者数量有限(例如2个)进行长时间的操作。

问题是如何确保只有2名消费者同时履行其职责。

让我们有一个消费者界面:

public interface Consumer{
    //Take a lot of time
    Observable<Result> doJob(Task task);

}

和队列类:

public class Queue {
    public void enqueue(Task task){
        //TODO: enqueue task and do it with limited count of Consumers
    }
}

如何组织任务队列和消费者的工作?

1 个答案:

答案 0 :(得分:2)

使用调度程序。将并发工作限制为两个任务:

Scheduler scheduler = Schedulers.from(Executors.newFixedThreadPool(2));
events.flatMap(x ->
     Observable.fromCallable(() -> process(x))
               .subscribeOn(scheduler))
    .subscribe(subscriber);