我正在玩Akka Streams并使用Alpakka从文件中传输内容。我需要在一段时间后停止流,所以我想使用KillSwitc
h。但我不知道如何使用它,因为我正在使用图形DSL。
我的图表如下所示:
val graph = RunnableGraph.fromGraph(GraphDSL.create() { implicit builder: GraphDSL.Builder[NotUsed] =>
import GraphDSL.Implicits._
source ~> mainFlow ~> sink
ClosedShape
})
graph.run()
我在这里找到了一个解决方案:How to abruptly stop an akka stream Runnable Graph?
但是,如果我使用图形DSL,我也不知道如何应用它。你能给我一些建议吗?
答案 0 :(得分:2)
要在GraphDSL中显示实例化值,您可以将实现该值的阶段传递给create
方法。用一个例子更容易解释。在你的情况下:
val switch = KillSwitches.single[Int]
val graph: RunnableGraph[UniqueKillSwitch] =
RunnableGraph.fromGraph(GraphDSL.create(switch) { implicit builder: GraphDSL.Builder[UniqueKillSwitch] => sw =>
import GraphDSL.Implicits._
source ~> mainFlow ~> sw ~> sink
ClosedShape
})
val ks = graph.run()
ks.shutdown()