2017-06-28 4 views
1
def throttle(elements: Int, per: FiniteDuration, maximumBurst: Int, mode: ThrottleMode): Repr[Out] 

Bedeutet maximumBurst die Anzahl der Elemente, die gleichzeitig verarbeitet werden können?Wie funktioniert akka stream drossel?

Antwort

1

Vom scaladoc:

Gas implementiert das Token-Bucket-Modell. Es gibt einen Bucket mit einer Tokenkapazität (Burst-Größe oder MaximumBurst). Tokens fällt in der Eimer mit einer bestimmten Rate und kann für die spätere Verwendung bis zu Eimer Kapazität "verschont bleiben, um einige Burstiness zu ermöglichen. Immer wenn der Stream senden möchte, werden so viele Token aus dem Bucket wie die Anzahl der Elemente benötigt. Wenn keine vorhanden ist, wartet die Drosselklappe, bis der Bucket genug Token akkumuliert. Bucket ist voll, wenn Stream nur materialisiert und gestartet.

maximumBurst ist die Token-Bucket-Größe in dem oben beschriebenen Modell. Angenommen, wir starten einen gedrosselten Strom und die Senke beginnt mit anspruchsvollen Elementen. Die Drosselklappenstufe gibt maximumBurst von ihnen vor dem Rückdruck (mit Formungsmodus) oder Fehler (mit Erzwingungsmodus) aus.

Also ich würde sagen, es ist die maximale Anzahl von Elementen, die ohne Drosselung verarbeitet werden können. "Zur gleichen Zeit" verarbeitet wird nie eine genaue Definition in einem Stream sein :)

Verwandte Themen