scala - 具有树结构的 Akka 流
问题描述
我有一个流程:
A +----> B +----> D
| |
| +----> E
|
+----> C +----> G
|
+----> H
我想通过 Akka Stream 实现这个流程。节点 B 和 C 的输出是一个列表,而 D、E、G、H 的输入是列表中的一个元素。我尝试过: - 从流 A ---> B 或 A --->C 的接收器创建源
但我并不幸运。你有什么建议吗?
解决方案
如评论中所述,您需要使用图形功能: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
...
})
推荐阅读
- javascript - Jquery .last() 等价于 Javascript
- python - 为什么使用 pytesseract 从图像中读取文本不起作用?
- github - cURL 在 GitHub 操作中失败
- vb.net - 在 vb.net 中使用 vb6 ocx 控件时无法加载文件或程序集“Interop.VBRUN”
- python - 如何使我的代码更高效,使其运行时间小于 1 秒
- ios - Xcode 12:为 iOS 10.0 编译,但模块“RxSwift”的最低部署目标为 iOS 12.0
- flutter - Flutter:更新 ListView 中的特定项目
- javascript - 使字体大小相对于它所在的容器?在 StreamElements 内
- python - 从图像中检测 LED 屏幕的不同方法
- wordpress - 缺少尾随斜杠apache wordpress ssl