Flowableへの変換(sequentialメソッド)
ParallelFlowableは異なるレール上で処理を行い、それぞれのレール上のSubscriberに通知を行います。しかし、処理が複数に分岐して同時に実行していても最終的に各レールの通知をマージして、1つのSubscriberで購読したいことがあります。つまり、ParallelFlowableをFlowableに変換するということです。それを実現するため、ParallelFlowableにはsequentialメソッドを用意しています。
sequentialメソッドは1つのレール上の処理でエラーが発生した場合、そのタイミングでエラーを通知してきます。しかし、場合によっては他の正常に処理をしているレールの処理を終えてからエラーの通知を受け取りたい場合もあるかと思います。そのため、エラーの通知を最後にするsequentialDelayErrorメソッドも用意されています。
注意点として、エラー発生後のデータ通知がParallelFailureHandlingの設定の有無で変わることを意識していないと、意図したデータやエラーの通知を受け取れない可能性があります。
また、sequentialDelayErrorメソッドは2.0.7より導入された機能なので、それ以前のバージョンにはないことに注意してください。
sequential/sequentialDelayErrorメソッド
-
rsequential()
-
sequential(int prefetch)
-
sequentialDelayError()
-
sequentialDelayError(int prefetch)
引数の型 | 引数名 | 説明 |
---|---|---|
int | prefetch | 各レールに対して通知するようにリクエストするデータ数。デフォルト(指定しない場合)では128。 |
まとめ
今回はRxJava 2.0.5から新たに追加されたParallelFlowableについて、執筆時点では最新のバージョン2.1.2を使って前回よりも詳しく見てきました。ただし、このParallelFlowabeはまだベータ版の段階なので、クラス名やメソッド名の変更やふるまいが変わる可能性が高く、今のバージョンになるまでに何度かふるまいやAPIの変更が発生しています。今後もいろいろと変わっていく可能性が高いので、プロダクトに導入するのはベータ版が終わり安定版となるまで待ったほうがいいでしょう。