का थ्रॉटल भाग मेरे पास एक जेएमएस कतार है। संदेश प्राप्त करने के बाद इसे डीबी में संग्रहीत करने की आवश्यकता है। फिर कुछ शर्त के आधार पर मैं इस संदेश को निश्चित दर के साथ तीसरे पक्ष की सेवा में भेजना चाहता हूं, इसलिए मैं थ्रॉटलिंग का उपयोग करता हूं।अपाचे कैमल। रूट
from("jms:queue")
.bean(persistingListener)
.choice()
.when(some condition ..)
.throttle(5)
.asyncDelayed()
.bean(thirdPartyServiceClient)
.endChoice();
हालांकि, पूरे मार्ग से रोक दिए हो जाता है, नहीं तृतीय पक्ष सेवा ग्राहक से संबंधित हिस्सा:
मैं निम्नलिखित मार्ग की है। मेरा मतलब है कि अगर मैं कतार में 100 संदेश डालता हूं, तो केवल पहले 5 पढ़ा जाएगा। इसलिए, इस मामले में उन संदेशों की प्रसंस्करण जो तीसरे पक्ष की सेवा की आवश्यकता नहीं है, देरी हो रही है।
तीसरे पक्ष की सेवा से संबंधित हिस्से पर केवल थ्रॉटल करने के बारे में कोई विचार? जहां प्रत्येक JMS संदेश अनुक्रम में संसाधित किया जाता है
अग्रिम
इस बात की संभावना है कि आपके हालत हमेशा सच है? आपको समय विंडो भी निर्दिष्ट करनी चाहिए। – alobodzk
@alobodzk, ठीक है, ऐसा कोई मौका नहीं है और मुझे लगता है कि इससे कोई फर्क नहीं पड़ता। डिफ़ॉल्ट रूप से थ्रॉटल टाइम विंडो 1 सेकंड पर सेट है। – StasKolodyuk
जेएमएस एंडपॉइंट पर asyncConsumer = true सेट करें। इसके दस्तावेज़ देखें: http://camel.apache.org/jms –