您能告诉我如何在这样的示例中保留具体化的Future[Int]
吗?
val test: Sink[Int, NotUsed] =
MergeHub.source[Int].grouped(100).to(Sink.fold(0L) { case (count, items) => count + items.sum }).run()
我想获得Sink[Int, Future[Int]]
。我查看了viaMat
,toMat
并且无法弄明白。
答案 0 :(得分:2)
如果您想在同一个地方run()
整个图表,只需使用toMat
+ Keep.right
val result: Future[Int] =
MergeHub.source[Int].grouped(100).toMat(Sink.fold(0) { case (count, items) => count + items.sum })(Keep.right).run()
如果您需要重复使用“group + fold”接收器,则需要删除源和run
电话
val sink: Sink[Int, Future[Int]] =
Flow[Int].grouped(100).toMat(Sink.fold(0) { case (count, items) => count + items.sum })(Keep.right)
docs中的更多信息。