我正在尝试确定我的用例是否需要使用 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 ,因为元素所来自的初始流是完全无序的。逻辑上属于同一子流的元素可以在时间上间隔很小。因此,如果过一会儿有某种形式的自动关闭,我希望重新创建子流。但是,如果那没有发生,那我就不需要了,因为无论如何,子流都将保持打开状态。
有什么想法吗?