Flow
私のプログラムには、並行して処理したいいくつかの があります。すべてが完了したら、何らかのアクションをトリガーしたいと思います。
これを行う 1 つの方法は、各完了後にアクターにメッセージを送信することです。アクターがすべてのフローの準備ができていることを確認すると、アクションをトリガーできます。
akka-streams Scala DSL 内に、見落としている可能性のあるもので、さらに簡単にするものがあるかどうか疑問に思っていました。
EDIT : ドキュメントに記載されているように、Future はストリームで発生した最初のイベントの直後に完了するため、Flow を Future に変換することはできません。次のコードを実行します。
implicit val system = ActorSystem("Sys")
val fm = FlowMaterializer(MaterializerSettings())
def main(args: Array[String]): Unit = {
val fut = Flow(1 second, {() => println("tick")}).toFuture(fm)
fut.onComplete{ _ =>
println("future completed")
}
}
「tick」、「future completed」、そして「tick」の無限のシーケンスが続きます。