Akka Streams从图表中的上一个Source的结果创建新的Source

时间:2016-04-29 15:20:30

标签: akka akka-stream

我正在尝试创建一个带有1个输入源的Graph,获取最后一个元素并生成新的源。目前我设法只通过使用Sink.last实现第一个流来实现这一目的。

Source.fromFuture(curStream.runWith(Sink.last).map(last => createStreamFromOffset(last)))

1 个答案:

答案 0 :(得分:0)

找到解决方案:

val g = RunnableGraph.fromGraph(GraphDSL.create() { implicit builder =>
    import GraphDSL.Implicits._

    val in = Source(1 to 10)

    val out = Sink.foreach(println)

    val concat = builder.add(Concat[Int](2))

    val f1 = Flow[Int].fold(0) { (acc, el) =>
      el
    }

    in ~> f1 ~> concat

    // creating new source from old stream last value
    in.via(f1).flatMapConcat(_ => Source(666 to 670)) ~> concat

    concat ~> out

    ClosedShape
  })
  g.run()