मेरे जेएमएस अनुप्रयोगों पर हम उत्पादकों पर अस्थायी कतार का उपयोग उपभोक्ता अनुप्रयोगों से जवाब प्राप्त करने में सक्षम होने के लिए करते हैं।ActiveMQ: अस्थायी कतारों का उपयोग करते समय ब्रोकर विफलता को कैसे संभालें
मैं अपने अंत पर ठीक उसी मुद्दे का सामना करना पड़ रहा के रूप में इस थ्रेड में उल्लिखित: http://activemq.2283324.n4.nabble.com/jira-Created-AMQ-3336-Temporary-Destination-errors-on-H-A-failover-in-broker-network-with-Failover-tt-td3551034.html#a3612738
जब भी मैं अपने नेटवर्क में एक मनमाना दलाल को पुनः आरंभ, मैं अपने उपभोक्ता आवेदन लॉग में इस तरह के कई त्रुटियाँ हो रही थी भेजने की कोशिश एक अस्थायी कतार का उत्तर दें:
javax.jms.InvalidDestinationException:
Cannot publish to a deleted Destination: temp-queue://ID:...
तब मैंने देखा कि गैरी वहाँ प्रतिक्रिया
jms.watchTopicAdvisories=false
औ रूप
उपयोग करने के लिए सुझाव क्लाइंट brokerURL
पर आरएल परम। मैंने तुरंत अपने क्लाइंट ब्रोकर यूआरएल को इस अतिरिक्त पैरामीटर के साथ बदल दिया। लेकिन अब मैं इस तरह त्रुटियों देख रहा हूँ जब मैं इस विफलता के परीक्षण के लिए नेटवर्क में मेरी दलालों को पुनः आरंभ:
javax.jms.JMSException:
The destination temp-queue:
//ID:client.host-65070-1308610734958-2:1:1 does not exist.
मैं ActiveMQ 5.5 संस्करण का उपयोग कर रहा हूँ। इसके अतिरिक्त यहां
failover:(tcp://amq-host1:61616,tcp://amq-host2.tred.aol.com:61616,tcp://amq-host3:61616,tcp://amq-host4:61616)?jms.useAsyncSend=true&timeout=5000&jms.watchTopicAdvisories=false
4 दलालों में से एक के लिए मेरी ActiveMQ config एक्सएमएल है:: और मेरे मुवक्किल दलाल URL ऐसा दिखाई देगा amq1.xml
किसी को यहाँ इस समस्या पर गौर और कृपया मुझे सुझाव है कि क्या गलती मैं मैं इस सेटअप में कर रहा हूँ।
अद्यतन:
कैसे मैं अपने कोड में अनुरोध-प्रतिक्रिया कर रहा हूँ पर आगे स्पष्ट करने के लिए:
- मैं पहले से ही एक प्रति निर्माता गंतव्य (यानी अस्थायी कतार) का उपयोग करते हैं और इस में सेट इसे जवाब दें प्रत्येक संदेश का शीर्षलेख।
- मैं पहले ही एक संदेश भेज रहा हूं जो JMSCorrelationID शीर्षलेख में अद्वितीय सहसंबंध पहचानकर्ता है।
- जहां तक मुझे पता है कि ऊंट और वसंत भी अनुरोध-प्रतिक्रिया तंत्र के लिए अस्थायी कतार का उपयोग कर रहे हैं। केवल अंतर यह है कि वसंत जेएमएस कार्यान्वयन प्रत्येक संदेश के लिए अस्थायी कतार बनाता है और नष्ट करता है जबकि मैं निर्माता के जीवनकाल के लिए अस्थायी कतार बना देता हूं। क्लाइंट (निर्माता) ऐप शट डाउन या एएमक्यू ब्रोकर द्वारा यह अस्थायी कतार नष्ट हो जाती है जब यह महसूस होता है कि इस अस्थायी कतार से कोई सक्रिय निर्माता संलग्न नहीं है।
- मैं पहले से ही निर्माता पक्ष पर प्रत्येक संदेश पर एक संदेश समाप्ति सेट कर रहा हूं ताकि संदेश बहुत लंबी (60 सेकंड) के लिए कतार में नहीं रखा जा सके।
क्या नया 'जेएमएसएक्सप्शन' अभी आपके क्लाइंट कोड में लॉग या फेंक दिया गया है? साथ ही, क्लाइंट ब्रोकर को भेजे गए प्रत्येक संदेश पर अपवाद फेंक दिया गया है, या विफलता पूर्ण होने पर अपवाद रोकता है? (क्या अपवाद केवल उस समय के दौरान फेंक दिया गया है जब ग्राहक कनेक्ट नहीं होता है?) – Bringer128
वहां [ऐसा लगता है] (http://activemq.apache.org/advisory-message.html#AdvisoryMessage-Disablingadvisorymessages) कुछ चीजें आपको अपने XML कॉन्फ़िगरेशन में 'jms.watchTopicAdvisories = false', यानी' <ब्रोकर सलाहकार समर्थन = "झूठी"> 'और आपके नेटवर्क को स्थिर रूप से कॉन्फ़िगर करने के अतिरिक्त करने की आवश्यकता है। (आपकी amq1.xml फ़ाइल मुझे 404 नहीं मिली) – opyate
@ Bringer128: आपकी टिप्पणी के लिए धन्यवाद। वह जेएमएस अपवाद अन्य एएमक्यू ब्रोकर पर फेंक दिया गया है जहां निर्माता फिर से कनेक्ट होने के बाद जुड़ता है। और एक बार ऐसा होने पर जेएमएस निर्माता उपभोक्ता से किसी भी प्रतिक्रिया प्राप्त करना बंद कर देता है क्योंकि एएमक्यू ब्रोकर सिर्फ उपरोक्त जेएमएस अपवाद के साथ निर्माता को जवाब नहीं भेज सकता है। – anubhava