2017-05-01 5 views
5

Wenn groupBy in einer Strom Flussdefinition mit einiger max Kapazität von n Verwendung:Akka Streams `groupBy` Kapazitätsänderung bei SubFlow-Abschluss?

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

Wenn ich die Subflows Haken dh Ergebnis, Schauspieler Enke und führt gezielt die Teilströme an einig Nachricht zu beenden, Wird das die groupBy Kapazität frei machen? Wird es von n zu n-1 zurück zu n gehen, wenn ein Unterfluss durch die Senke beendet wird? Ist dies ein praktikabler Weg, um einen dynamischen Graphen zu erstellen?

Antwort

0

In Bezug auf, wie groupBy Werke im Allgemeinen: ja, die maxSubstreams Kapazität ist dynamisch, das heißt, sie die maximale Anzahl von aktiven Strömen darstellen.

Die GroupBy -Stufe enthält einen Verweis auf jeden untergeordneten Nachrichtenfluss in seinem internen Status. Dieser wird entfernt, sobald dieser bestimmte untergeordnete Nachrichtenfluss abgeschlossen wird.

In Bezug auf Ihr konkretes Beispiel, glaube ich nicht, gibt es eine Möglichkeit, um sicherzustellen, dass "ein Unterflow von der Senke beendet wird". Dies liegt daran, dass bei Verwendung von to(Sink.actorRef) nach einem groupBy alle Flüsse einen einzelnen Aktor speisen.

+0

Vielen Dank für die Klarstellung! Gibt es dann eine empfohlene Möglichkeit, einen untergeordneten Ablauf ordnungsgemäß herunterzufahren? – simonl

+1

Ist über diese Frage gestolpert - http://stackoverflow.com/questions/38325210/proper-way-to-stop-akka-streams-on-condition; sieht aus, als könnte ich mit 'takeWhile' /' statusfulMapconcat' erreichen, was ich will – simonl

Verwandte Themen