Нужно предложить, мне нужно запустить параллельные множественные диаграммы источников, например, я создал этот пример кода, где я создаю 10 графиков и выполняю их параллельно.Akka Stream - параллельные управляемые графики
Является ли это правильным подходом или я должен создать несколько источников внутри графика и запустить их параллельно на одном графике?
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())
Благодаря Arun
Почему все, что код, чтобы сделать эквивалент: Source (начала до конца) .map (_ ToString.) .runForeach (х => Println "$ имя (s: $ x ")) –
Я достал сложную обработку потока от основного кода для поддержания интеллектуальной собственности. Заявление о проблеме заключается в том, что если у меня есть несколько исходных данных, и вам нужно запустить график для каждого источника, что было бы лучше всего. Например, мы можем думать о том, что несколько источников могут думать о чтении нескольких тем кафки, преобразовании, обработке и потоке с базой данных. – ASe
Подход выглядит несколько странным для меня, хотя я не могу точно указать, почему. Я бы отделил время, чтобы вещи были их собственным этапом, затем используйте Merge и/или Balance, чтобы связать их вместе, в один граф. Затем запустите этот один граф только один раз. Теперь вы создаете n «островов». – akauppi