2016-04-06 6 views
3

私はAkkaストリームを開始しています。私は、Webサービスからデータを読み込んでS3でそれらを維持するストリームを作成しようとしています。 永続性のためにSink.foldメソッド(永続化された要素に関する情報を収集するために)を使用してシンクを定義すると、シンクに送信される要素が順番に処理されるか、並列処理されるのでしょうか?Akka Streamsでは、Sink.fold()処理がシリアル化されていますか?

基本的な質問ですが、私はドキュメントで決定的な答えを見つけることができませんでした。

答えて

4

Sink.foldは、前の要素の結果を次の要素と組み合わせる必要があるため、必然的に順次です。

これは実際にはSink.foldLeftの詳細です。

つまり、を要素として使用し、fを使用して折り畳んだ場合は、を処理するにはacc = f(zero, a)が必要です。したがって、aの処理が完了するまで、bは処理できません。 api docから

:それにその前の出力(または所与のゼロ値)とを入力として要素を与え、すべての受信された要素の所与の機能を呼び出す

Aシンク。返されたjava.util.concurrent.CompletionStageは、入力ストリームが終了したときの最終関数評価の値で完了します。または、ストリームに失敗が通知された場合はFailureで完了します。

関連する問題