2

Akka Streams 文档明确指出,为了使流可运行,它必须有一个源和一个接收器。我想知道是什么强加了这种约束。将多个源合并为一个从单个流分叉的多个接收器的场景都是非常合理的。是否有任何技术原因支持这种限制?

4

1 回答 1

2

我假设你参考了这个文档部分,它定义了 Akka Streams 的基本组件:

来源:只有一个输出的处理阶段,[...]

Sink:只有一个输入的处理阶段,[...]

流程:只有一个输入和输出的处理阶段,[...]

RunnableGraph:两端分别“附加”到 Source 和 Sink 的 Flow,并且准备好成为run().

现在,虽然前 3 个定义清晰而真实,但我认为 的定义RunnableGraph是不完整的。ARunnableGraph可以定义为所描述的(即source.via(flow).to(sink)),这是获得其中之一的最简单方法。然而,还有更灵活和复杂的方式来定义RunnableGraphs,例如GraphDSL

如果您查看节中的示例,您将看到RunnableGraph由多个源和/或多个接收器构建的 s。

说 aRunnableGraph是一个没有输入也没有输出的处理阶段(即有 a ClosedShape)可能更准确。

于 2017-03-20T21:21:11.837 回答