关闭Akka-Stream GroupBy子流的行为如何?

时间:2019-01-23 16:01:13

标签: scala akka-stream

我正在尝试确定我的用例是否需要使用 allowClosedSubstreamRecreation

我的问题是文档https://doc.akka.io/docs/akka/2.5/stream/operators/Source-or-Flow/groupBy.html 确实让我感到困惑:

  

如果 allowClosedSubstreamRecreation 设置为false(默认   行为),操作员会跟踪具有   已经关闭了。如果您期望键的数量无限,则可以   导致内存问题。属于那些键的元素被耗尽   直接而不发送给子流。

在文档https://doc.akka.io/docs/akka/2.5/stream/stream-substream.html的另一部分中,我们有:

  

首次遇到新密钥时,   打开并随后馈入属于该键的所有元素。   如果allowClosedSubstreamRecreation设置为true,则属于   如果之前已关闭,则将重新创建特定密钥   属于该键的元素将被删除。

1)何时以及如何关闭子流?在我的情况下,虽然键的数量不是无限的,但是它是动态的,我最终可能会获得最多100个键。我只是不知道是否应该使用该选项。我不希望自己的子视频流在没有我理解的情况下就关闭。

我的直觉是使用 allowClosedSubstreamRecreation = true ,因为元素所来自的初始流是完全无序的。逻辑上属于同一子流的元素可以在时间上间隔很小。因此,如果过一会儿有某种形式的自动关闭,我希望重新创建子流。但是,如果那没有发生,那我就不需要了,因为无论如何,子流都将保持打开状态。

有什么想法吗?

0 个答案:

没有答案