【问题标题】:Akka stream with a tree structure具有树结构的 Akka 流
【发布时间】:2019-01-11 06:03:03
【问题描述】:

我有一个流程:

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

我想通过 Akka Stream 实现这个流程。节点 B 和 C 的输出是一个列表,而 D、E、G、H 的输入是列表中的一个元素。 我努力了: - 从流 A ---> B 或 A --->C

的接收器创建源

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

【问题讨论】:

  • @RamanMishra:谢谢你的建议,但我想在 Akka Stream 上实现这个结构。
  • 你可以有一个源两个流,每个流有 2 个不同的接收器有什么问题?
  • 我的问题是我无法从 A--->B 和 A--->C 的接收器或流创建源
  • 你需要在哪里从 sink 创建 Source? B 和 C 将是流动的,D、E 和 G、H 将是汇@Toan Nguyen

标签: scala akka-stream


【解决方案1】:

如cmets中所说,需要用到图函数:https://doc.akka.io/docs/akka/2.5/stream/stream-graphs.html

例如在 A 之后,您需要添加一个具有 2 个输出的 Broadcaster 来将消息传递给 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
  ...
})

【讨论】:

    猜你喜欢
    • 2019-11-08
    • 2012-03-06
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    相关资源
    最近更新 更多