Я пытаюсь написать график Akka Stream. Код, который я написал,
val graph = RunnableGraph.fromGraph(GraphDSL.create(sink1, sink2)((_, _)) { implicit builder =>
(sink1, sink2) =>
import GraphDSL.Implicits._
val bcast = builder.add(Broadcast[Row](2))
val flow = source ~> flow1 ~> flow2
flow.out ~> bcast.in
bcast.out(0) ~> sink1
bcast.out(1) ~> flow3 ~> flow4 ~> sink2
ClosedShape
})
val (f1, f2) = graph.run()
val consolidated = Future.sequence(List(f1, f2))
Await.result(consolidated, Duration.Inf)
Этот код не компилируется, потому что я не могу соединить выход из потока с входом bcast.
Я могу соединить выход источника с входом bcast, но я не могу этого сделать, потому что некоторые части являются общими между двумя ветвями. Поэтому я должен создать ветку в графе только после потока2
Кроме того... Я не уверен, правильно ли я пишу график, потому что он возвращает два фьючерса Done, и мне нужно объединить их в одно будущее вручную, используя Sequence.