Ich habe eine JMS-Warteschlange. Nach Erhalt der Nachricht muss diese in der Datenbank gespeichert werden. Dann, abhängig von einer Bedingung, möchte ich diese Nachricht an einen Drittanbieter mit fester Rate senden, also verwende ich die Drosselung.Apache Kamel. Drossel Teil der Route
Ich habe die folgende Route:
from("jms:queue")
.bean(persistingListener)
.choice()
.when(some condition ..)
.throttle(5)
.asyncDelayed()
.bean(thirdPartyServiceClient)
.endChoice();
Allerdings wird die gesamte Strecke gedrosselt wird, nicht die an Dritte Service-Client bezogenen Teil. Ich meine, wenn ich 100 Nachrichten in die Warteschlange bringe, werden nur die ersten 5 gelesen. In diesem Fall wird die Verarbeitung von Nachrichten, für die kein Service von Drittanbietern erforderlich ist, verzögert.
Irgendwelche Ideen, wie man nur auf dem Teil drosselt, der sich auf Dienstleistungen von Drittanbietern bezieht?
Vielen Dank im Voraus
Gibt es eine Chance, dass Ihr Zustand immer wahr ist? Sie sollten auch das Zeitfenster angeben. – alobodzk
@alobodzk, nun, es gibt keine solche Chance und ich denke, es spielt keine Rolle. Standardmäßig ist das Gaszeitfenster auf 1 Sekunde eingestellt. – StasKolodyuk
Legen Sie asyncConsumer = true für den JMS-Endpunkt fest. Siehe seine Dokumentation: http://camel.apache.org/jms –