2016-09-29 12 views
1

rx形式のコンシューマが限られている(たとえば2つ)という長時間の操作を実行しようとしました。RxJavaのプロデューサ - コンシューマ

問題は、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 
    } 
} 

タスクキューと消費者の仕事を整理する方法は?

答えて

2

スケジューラを使用します。並行作業を2つのタスクに限定するには、

Scheduler scheduler = Schedulers.from(Executors.newFixedThreadPool(2)); 
events.flatMap(x -> 
    Observable.fromCallable(() -> process(x)) 
       .subscribeOn(scheduler)) 
    .subscribe(subscriber); 
関連する問題