Frage

Ich habe einen Camel Routen Definition geschrieben in Java DSL wie folgt aus:

from(myEndpoint) 
.throttle(200)
.to(myOtherEndpoint);

Dies verbindet meine beiden Endpunkten eine Throttler verwendet, die den Nachrichtenfluss zu 200 Nachrichten pro Sekunde begrenzt.

Ich bin auf der Suche nach einer Möglichkeit, die maximumRequestCount / Sekunde während der Laufzeit zu ändern. Also brauche ich irgendwie an die Throttler Instanz zu erhalten, die aufgerufen wird und die Eigenschaft zu ändern.

Wie kann ich die Throttler zugreifen?

War es hilfreich?

Lösung

Ok, ich dachte, es von mir aus ...

Sie müssen sich Ihre Throttler Instanz definieren.

Throttler throttler = new Throttler(null, 200);

Dann können Sie es in Ihren Routen wie diese, weil Throttler den Prozessor-Schnittstelle implementiert:

from(myEndpoint) 
.process(throttler)
.to(myOtherEndpoint);

Jedes Mal, wenn Sie Ihnen die Eigenschaften des throttler ändern können.

Andere Tipps

Ja, das ist eine saubere Lösung.

In Camel 2.0 können Sie jetzt die Runtime-Prozessoren in der Route navigieren und somit keine Throttlers finden und dann in der Lage sein, dynamisch zu ändern.

Wir arbeiten aber auch die JMX in Camel auf die Verbesserung 2.1 so können Sie throttler / Verzögerer und die Gleichen von JMX ändern.

Und vielleicht auch den Navigate-API verbessern, so dass Sie in einem Einzeiler finden können, zum Beispiel vielleicht von id Nachschlag, wenn Sie eine ID in der Route zur Verfügung stellen. Oder durch die Typen so können Sie filtern und erhalten nur die Throttlers etc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top