2017-05-01 40 views
5

当在流流定义使用groupByn一些最大容量:Akka在SubFlow上完成streams`groupBy`的容量更改?

source.groupBy(Int.MaxValue, _.key).to(Sink.actorRef) 

如果我挂钩导致说子流,一个演员水槽,并有目的地使所述子流终止于一些消息,将释放容量为groupBy?如果一个子流由接收器结束,是否会从n变为n-1回到n?这是建立动态图形的可行方法吗?

回答

0

关于如何groupBy作品一般:,所述maxSubstreams容量是动态的,即,它表示的活性子的最大数量。

GroupBy阶段保持每个子流在其内部状态的引用,并且只要该特定子流完成就会将其删除。

关于您的具体示例,我不认为有一种方法可以确保“子流程由接收器结束”。这是因为通过在groupBy之后使用to(Sink.actorRef),所有的流程将会馈送一个演员。

+0

谢谢您的澄清!那么,是否有建议的方式来优雅地关闭子流? – simonl

+1

这个问题陷入了困境 - http://stackoverflow.com/questions/38325210/proper-way-to-stop-akka-streams-on-condition;看起来像我可以用'takeWhile' /'statefulMapconcat'实现我想要的 – simonl