我的程序中有几个Flow
s,我想并行处理。全部完成后,我想触发一些动作。
一种方法是在每次完成后向 Actor 发送消息,当 Actor 验证所有流都准备好时,它就可以触发动作。
我想知道在 akka-streams Scala DSL 中是否有任何我可能会忽略的东西使它变得更加简单。
编辑:将流转换为未来将不起作用,因为正如文档所述,未来在流中发生的第一个事件之后立即完成。运行以下代码:
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”。