2015-01-19 8 views
5

JMSXDeliveryCount वेबस्पेयर एमक्यू में बढ़ी है, तो क्या शर्तें हैं। मुझे उन सभी परिदृश्यों की आवश्यकता है जिनके तहत यह हो सकता है।जब JMSXDeliveryCount

उत्तर

2

धन्यवाद बहुत कुछ मुझे उत्तर फ़ॉर्म वेब मिला और इसे यहां चिपकाया ताकि यह अन्य के लिए सहायक हो।

परिस्थितियों के तहत संदेश उपभोक्ता के लिए redelivered किया जा सकता है सत्र की पावती मोड पर निर्भर करते हैं:

  • गैर लेन-देन वाले सत्रों AUTO_ACKNOWLEDGE या DUPS_OK_ACKNOWLEDGE पावती मोड चुनने के संदेशों को एक उपभोक्ता के लिए redelivered है जब आवेदन की onMessage() विधि अपवाद फेंकता है। क्लाइंट रनटाइम अपवाद को पकड़ता है, और उसके बाद मैसेज() को फिर से कॉल करता है। अपवाद पकड़े जाते हैं और कनेक्शन के अपवाद लिस्टनर को सूचित किया जाता है। पुनर्विक्रय प्रयासों की सीमा निर्धारित करना पुनर्विक्रय गणना को सीमित करता है। नीचे दिए गए नोट देखें।

  • गैर-लेनदेन वाले सत्र जो SINGLE_MESSAGE_ACKNOWLEDGE या CLIENT_ACKNOWLEDGE पावती मोड चुनते हैं, जब एप्लिकेशन सत्र.recover() को कॉल करता है तो संदेशों को फिर से वितरित किया जाता है।

  • ट्रांस्ड स्वीकृति मोड के साथ, जब कोई लेनदेन वापस लेता है तो संदेशों को फिर से वितरित किया जाता है।

एक आवेदन एक पाश जहां यह बार-बार संदेश है कि विफल आवेदन का कारण बनता है और फिर एक ही संदेश बार-बार redelivered है प्राप्त करता है में मिल सकता है। एक अनंत पुनर्विक्रेता पाश को कभी-कभी "जहर संदेश परिदृश्य" के रूप में जाना जाता है।

  • पॉइंट-टु-बिंदु (कतार आधारित) उपभोक्ता ग्राहकों कि पुनर्वितरण प्रयास ConnectionFactory पर एक पैरामीटर निर्दिष्ट द्वारा उपभोक्ता के लिए एक संदेश के प्रसव की संख्या को सीमित कर सकते हैं विवश करना चाहते हैं। । यह progress.message.jclient.ConnectionFactory.setMaxDeliveryCount (java.lang.Integer value) मेथोस के साथ किया जाता है। 0 (डिफ़ॉल्ट) का मान कोई सीमा इंगित नहीं करता है।

संदेश जो पुनर्विक्रय सीमा पार कर चुके हैं और स्वीकार नहीं किए गए हैं उन्हें संदेश में निर्दिष्ट गुणों के अनुसार संसाधित किया जाएगा या त्याग दिया जाएगा।

संदेश संपत्ति JMS_SonicMQ_preserveUndelivered सही पर सेट किया है, तो संदेश SonicMQ.DeadMessage कतार (या कोई वैकल्पिक गंतव्य JMS_SonicMQ_destinationUndelivered संपत्ति द्वारा निर्दिष्ट) पर रखा जाएगा, और संदेश संपत्ति JMS_SonicMQ_undeliveredReasonCode त्रुटि कोड प्रगति पर निर्धारित किया जाएगा .message.jclient.Constants.UNDELIVERED_DELIVERY_LIMIT_EXCEEDED। यदि 'preserveUndelivered' संपत्ति सेट नहीं है, तो संदेश को त्याग दिया जाएगा।

  • वैकल्पिक रूप से, (जैसे कि पब-उप विषय के आधार पर ग्राहकों और ध्वनि ESB सेवा/प्रक्रियाओं के रूप में) JMS अनुप्रयोगों हो रही है और प्रत्येक संदेश पर JMSXDeliveryCount संपत्ति के मूल्य पर अभिनय द्वारा अपने दम पर पता लगाने कर सकते हैं। JMSXDeliveryCount प्रॉपर्टी किसी संदेश के लिए डिलीवरी प्रयासों की संख्या निर्दिष्ट करने के लिए एक int का उपयोग करती है। Javax.jms.Message.getIntProperty ("JMSXDeliveryCount") विधि के साथ अपना मान प्राप्त करता है। उपभोक्ता को संदेश हर बार दिए जाने पर इस संपत्ति का मूल्य बढ़ जाता है। उपभोक्ता ऑब्जेक्ट को वितरित होने वाले संदेशों के लिए क्लाइंट रनटाइम में डिलिवरी काउंटर बनाए रखा जाता है। यदि कोई उपभोक्ता बंद/समाप्त हो गया है और पुन: प्रारंभ/पुनरारंभ किया गया है, तो उपभोक्ता को भेजे गए प्रत्येक संदेश के लिए काउंटर 0
4

हर बार एक संदेश को उपभोक्ता को फिर से वितरित किए जाने पर JMSXDeliveryCount बढ़ जाती है। एक संदेश को फिर से वितरित किया जा सकता है:

1) क्लाइंट स्वीकृति मोड का उपयोग करने वाले उपभोक्ता ने संदेश प्राप्त किया था, पहले उस संदेश पर पावती() को कॉल नहीं किया था।

2) उपभोक्ता को एक लेनदेन में संदेश प्राप्त हुआ, उसने कोई प्रतिबद्धता नहीं कहा या रोलबैक नहीं कहा।

संपादित करें:

तो JMS क्लाइंट संदेश संसाधित करने में असमर्थ है कुछ बुरी JMS हेडर के कारण है, तो इस तरह के एक संदेश (जहर संदेश के रूप में जाना जाता है) आवेदन और JMS ग्राहक के लिए आंतरिक रूप से वितरित नहीं किया जाएगा होगा उस संदेश को रोलबैक करें। इस मामले में भी JMSXDeliveryCount बढ़ी है।

आईबीएम एमक्यू में, क्या आपने कतार के लिए बैकआउट कतार और बैकआउट थ्रेसहोल्ड गुण सेट किए हैं, जिनसे संदेश पुनर्प्राप्त किए जा रहे हैं? बैकआउट थ्रेसहोल्ड पहुंचने के बाद जेएमएस क्लाइंट बैकआउट कतार में ऐसे खराब संदेश रखेगा। यह एक ही संदेश से बचने के लिए है जो जेएमएस क्लाइंट द्वारा बार-बार पुनर्प्राप्त किया जाता है, इस प्रकार अन्य अच्छे संदेशों को एप्लिकेशन में वितरित होने से अवरुद्ध कर दिया जाता है।

+0

क्या आप इससे भी बुरा संदेश के मामले में मेरी सहायता कर सकते हैं, यह फिर से- डिलीवर किया गया है या ये एकमात्र परिदृश्य हैं जिनके तहत यह हो सकता है क्योंकि जिस स्थिति में मुझे सामना करना पड़ रहा है वह यह है कि यह बढ़ रहा है और लेनदेन सफल होने के कारण मैं इसका कारण पता लगाने में सक्षम नहीं हूं। यह बहुत अच्छा होगा अगर आप उस पर आगे मेरी मदद कर सकते हैं ... :) – AjayLohani