首页 > 解决方案 > 具有树结构的 Akka 流

问题描述

我有一个流程:

A +----> B +----> D
  |        |
  |        +----> E
  |
  +----> C +----> G
           |
           +----> H

我想通过 Akka Stream 实现这个流程。节点 B 和 C 的输出是一个列表,而 D、E、G、H 的输入是列表中的一个元素。我尝试过: - 从流 A ---> B 或 A --->C 的接收器创建源

但我并不幸运。你有什么建议吗?

标签: scalaakka-stream

解决方案


如评论中所述,您需要使用图形功能:https ://doc.akka.io/docs/akka/2.5/stream/stream-graphs.html

例如,在 A 之后,您需要添加一个具有 2 个输出的广播器来将消息传递给 B 和 C。在 B 和 C 之后也是如此。

val g = RunnableGraph.fromGraph(GraphDSL.create() { implicit builder: GraphDSL.Builder[NotUsed] =>
  import GraphDSL.Implicits._
  val a = Source(1 to 10)

  val bcast = builder.add(Broadcast[XXX](2))
  val b = builder.add(...)
  val c = builder.add(...)

  a ~> bcast ~> b
  a ~> bcast ~> c
  ...
})

推荐阅读