需要建議,我需要運行並行多個源圖,例如,我創建了這個示例代碼,我創建了10個圖並將它們並行運行。Akka流 - 並行運行圖
這是正確的方法,還是應該在圖中創建多個源並在一個圖中並行運行它們?
def createGraph(start: Int, end: Int, name: String) = {
RunnableGraph.fromGraph(GraphDSL.create() {
implicit builder =>
import GraphDSL.Implicits._
val s = Source(start to end)
val f = Flow[Int].map[String](x => x.toString)
val sink = Sink.foreach[String](x => println(name + ":" + x))
val t = builder.add(s)
val flow1 = builder.add(f)
t ~> flow1 ~> sink
ClosedShape
})
}
(1 to 10).map(x => createGraph(x, x + 10, "g" + x)).map(_.run())
感謝 阿倫
爲什麼所有的代碼做等價的:源(開始到結束).MAP(_的toString。).runForeach(X =>的println(S「$名: $ x「)) –
我拿出了一些複雜的流程處理從主要代碼維護知識產權。問題陳述是如果我有多個源信息並需要爲每個源運行圖,那麼最佳實踐是什麼。例如,我們可以考慮多個來源可能會考慮閱讀多個卡夫卡主題,轉換,處理和沉浸數據庫。 – ASe
這個方法對我來說有點奇怪,但我不能完全指出原因。我會分開時間把事情做成自己的舞臺,然後使用合併和/或平衡將它們組合成一張圖。然後運行一個圖表,只需一次。現在你正在創建n個「島嶼」。 – akauppi