如何在Akka Streams中创建流的流

时间:2016-03-11 00:08:01

标签: scala akka akka-stream

我是Akka Stream的学习者。我想在Akka Stream中创建一个流媒体流。我知道SubFlow并尝试SubFlow的一些方法,但我无法做我想做的事情。以下代码代表我想要做的事情,但它有一些问题。

我想处理下面代码为mapAsync的流流(该流程意味着映射流的流并使用接收器运行流的流)。

// Create a stream of streams
val streamOfStreams: Source[Source[Int, Unit], Unit] =
  Source(1 to 10)
    // concat a stream and Source.single(elem)
  .fold(Source.empty[Int])((stream, elem) => stream ++ Source.single(elem))


streamOfStreams
  // Print elements of the stream of streams by Sink.foreach
  .mapAsync(1){stream => stream.runForeach(e => println("inner " + e))}
  // Print the result of stream.runForeach()
  .runForeach(futureResult => println("futureResult: " + futureResult))

输出在这里

inner 1
inner 2
inner 3
inner 4
inner 5
inner 6
inner 7
inner 8
inner 9
inner 10
futureResult: ()

代码问题是fold(Source.empty)(_ ++ Source.single(_))。虽然在这种情况下,源Source(1 to 10)只有很少的元素,但实际上我想处理一个包含大量元素的流。因此,当流有很多元素时,fold会花费很多时间并导致错误。

所以我想告诉我如何创建流的流。谢谢你的阅读。

0 个答案:

没有答案