Mam kolejkę JMS. Po otrzymaniu wiadomości należy ją zapisać do DB. Następnie, w zależności od pewnych warunków, chcę wysłać tę wiadomość do usługi strony trzeciej o stałej stawce, więc używam dławienia.Apache Camel. Część przepustnicy na trasie
Mam następującą trasę:
from("jms:queue")
.bean(persistingListener)
.choice()
.when(some condition ..)
.throttle(5)
.asyncDelayed()
.bean(thirdPartyServiceClient)
.endChoice();
Jednak cała trasa zostanie zdławiony, a nie części dotyczącej trzeciej klienta usług stroną. Mam na myśli to, że jeśli ustawię 100 wiadomości w kolejce, tylko pierwsze 5 zostanie odczytane. Tak więc w takim przypadku przetwarzanie wiadomości, które nie wymagają usługi strony trzeciej, jest opóźnione.
Jakieś pomysły dotyczące sposobu ograniczania przepustowości tylko w części związanej z usługami osób trzecich?
góry dzięki
Czy jest szansa, że twój stan jest zawsze prawdziwe? Powinieneś również określić okno czasowe. – alobodzk
@alobodzk, cóż, nie ma takiej szansy i myślę, że to nie ma znaczenia. Domyślnie okno czasu przepustnicy jest ustawione na 1 sekundę. – StasKolodyuk
Ustaw wartość asyncConsumer = true na punkcie końcowym JMS. Zobacz jego dokumenty: http://camel.apache.org/jms –