如何在自定义接收器中保留物化价值?

时间:2017-06-25 09:09:29

标签: scala akka akka-stream

您能告诉我如何在这样的示例中保留具体化的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]]。我查看了viaMattoMat并且无法弄明白。

1 个答案:

答案 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中的更多信息。