2012-07-26 6 views
17

मैंने इसे Google पर करने का प्रयास किया है, लेकिन सफल नहीं हुआ है। अगर मैं AUTO_ACKNOWLEDGE का उपयोग कर रहा हूं, और मेरे पास जावा में लिखा गया उपभोक्ता क्लाइंट है, तो संदेश कब स्वीकार किया जाता है? मैं MessageListener का उपयोग कर रहा हूं जिसमें onMessage विधि शामिल है। क्या पावती onMessage से पहले या onMessage से पहले या किसी अन्य बिंदु पर सर्वर पर वापस भेजी गई है? किसी भी मदद के लिए अग्रिम धन्यवाद किसी को भी प्रदान करने में सक्षम है!जेएमएस AUTO_ACKNOWLEDGE कब इसे स्वीकार किया जाता है?

उत्तर

19

कृपया यह one देखें।

AUTO_ACKNOWLEDGE मोड के साथ onMessage() हैंडलर रिटर्न के बाद पूरी तरह से होने वाली स्वीकृति हमेशा अंतिम बात होती है। संदेश प्राप्त करने वाले ग्राहक उपभोग सत्र पर CLIENT_ACKNOWLEDGE मोड निर्दिष्ट करके गारंटीकृत संदेशों की डिलीवरी पर बेहतर नियंत्रण प्राप्त कर सकते हैं।

CLIENT_ACKNOWLEDGE का उपयोग एप्लिकेशन को कब स्वीकार किया जाता है जब नियंत्रण को नियंत्रित करने की अनुमति देता है। उदाहरण के लिए, एक आवेदन एक संदेश को स्वीकार कर सकता है - जिससे जेएमएस प्रदाता को अपने कर्तव्य से मुक्त किया जा सकता है - और संदेश द्वारा प्रतिनिधित्व किए गए डेटा की और प्रसंस्करण निष्पादित करता है। इसकी सूची कुंजी ऑब्जेक्ट पर स्वीकृति() विधि है, जैसा कि लिस्टिंग 1 में दिखाया गया है।

acknowledge() विधि जेएमएस प्रदाता को सूचित करती है कि संदेश उपभोक्ता द्वारा सफलतापूर्वक प्राप्त किया गया है। स्वीकृति प्रक्रिया के दौरान प्रदाता विफलता होने पर यह विधि क्लाइंट को अपवाद फेंकता है। पुनर्विक्रय के लिए जेएमएस सर्वर द्वारा बनाए रखा संदेश में प्रदाता विफलता का परिणाम।

+6

अगर एक अपवाद के 'onMessage()' प्रसंस्करण के दौरान फेंक दिया जाता है तो क्या होगा? यदि 'AUTO_ACKNOWLEDGE' सेट किया गया है तो संदेश को फिर से वितरित किया जाएगा? – Geek

+2

@ गीक - अगर अपवाद को या रिसीव में या जेएमएस लिस्टनर में फेंक दिया गया है तो पावती नहीं भेजी जाती है और – GameSalutes

+0

को फिर से वितरित किया जाएगा यदि AUTO_ACKNOWLEDGE के साथ सिंक्रनाइज़ संदेश प्राप्त करते हैं, तो उपभोक्ता को कॉल करते समय संदेश स्वीकार किया जाता है। – Wecherowski

5

CLIENT_ACKNOWLEDGE
इस स्वीकृति के मोड के साथ , ग्राहक संदेश के स्वीकार करते हैं विधि को फोन करके एक भस्म संदेश को स्वीकार करता है। या तो जब सत्र सफलतापूर्वक प्राप्त करते हैं या करने के लिए एक फोन से वापस आ गया है संदेश श्रोता सत्र की प्रक्रिया के लिए आह्वान किया है जब

Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE); 
... 
msg = (TextMessage) consumer.receive(); 
//acknowledge 
msg.acknowledge(); 

AUTO_ACKNOWLEDGE
इस स्वीकृति के मोड के साथ , सत्र स्वचालित रूप से एक संदेश की एक ग्राहक की रसीद को स्वीकार करता है संदेश सफलतापूर्वक लौटता है।

Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); 

source
Best example

संबंधित मुद्दे