हमारे पास एक ऐसा एप्लिकेशन है जो एक जेएमएस विषय पर ईवेंट नोटिफिकेशन प्रकाशित करता है। यहां देखा गया मुद्दा यह है कि काफी समय के बाद, वेबलॉगिक में संदेश स्टोर आकार में 10GB से अधिक तक पहुंच जाता है। क्या एक घटक को लागू करने का कोई तरीका है जो एक जेएमएस विषय से संदेशों को हटा सकता है जो एक निश्चित आयु (30 दिन कहें) पार कर चुके हैं?
वर्तमान में एक प्रक्रिया है, डाउनटाइम गतिविधि के दौरान संदेश संग्रह हटा दिया जाता है। हालाँकि, प्रक्रिया में सदस्यता लेने वाले अनुप्रयोगों के मालिकों से एक पूर्वापेक्षित जाँच होती है कि क्या अंतिम संदेश के आधार पर कार्रवाई संसाधित की गई है या नहीं।
धन्यवाद
2 जवाब
JMS विषय के लिए संदेश संचय इंगित करता है कि कम से कम एक निष्क्रिय टिकाऊ सदस्यता है या शायद धीमी सदस्यता उपभोक्ता है। सामान्य तौर पर, आप निष्क्रिय टिकाऊ सब्सक्रिप्शन को हटाकर, धीमी सब्सक्रिप्शन उपभोक्ताओं को तेज करके, संदेश उत्पादन को धीमा कर सकते हैं ताकि उपभोक्ता इसे बनाए रख सकें, आदि।
यदि आप 30 दिनों से अधिक पुराने संदेशों को बनाए नहीं रखना चाहते हैं तो आप JMS विनिर्देश द्वारा परिभाषित "मैसेज टाइम-टू-लाइव" कार्यक्षमता का उपयोग करने का प्रयास कर सकते हैं। जेएमएस 1.1 स्पेक की धारा 4.8 बताती है:
क्लाइंट अपने द्वारा भेजे जाने वाले प्रत्येक संदेश के लिए मिलीसेकंड में समय-से-लाइव मान निर्दिष्ट कर सकता है। यह मान एक संदेश समाप्ति समय को परिभाषित करता है जो संदेश के समय-समय पर और GMT को भेजा जाता है (लेन-देन भेजने के लिए, यह वह समय है जब ग्राहक संदेश भेजता है, न कि लेन-देन किए जाने का समय)।
JMS प्रदाता को संदेशों को सही ढंग से समाप्त करने की पूरी कोशिश करनी चाहिए; हालांकि, जेएमएस प्रदान की गई सटीकता को परिभाषित नहीं करता है। केवल समय-समय पर रहने की उपेक्षा करना स्वीकार्य नहीं है।
संदेश समाप्ति पर अधिक जानकारी के लिए, खंड 3.4.9 "JMSExpiration" देखें।
संदेश का लाइव टाइम-टू-लाइव सेट किया जा सकता है जब संदेश javax.jms.MessageProducer.setTimeToLive(long)
या ओवरलोडेड send()
विधियों में से एक। इसके लिए, निश्चित रूप से, भेजने वाले आवेदन के कोड को बदलने की आवश्यकता होगी।
कई ब्रोकर ब्रोकर पर संदेश का समय-समय पर या समाप्ति समय निर्धारित करने का समर्थन करते हैं ताकि क्लाइंट संशोधनों की सख्त आवश्यकता न हो। मैं यह जानने के लिए वेबलॉगिक से पर्याप्त परिचित नहीं हूं कि यह इस कार्यक्षमता का समर्थन करता है या नहीं, लेकिन यह जांच के लायक है कि क्या आप इस समाधान का उपयोग करना चाहते हैं और अपने ग्राहकों को संशोधित नहीं करना चाहते हैं।
निम्नलिखित कोड में आया, जो कतार के माध्यम से ब्राउज़ करके संदेशों को साफ़ करने में मदद कर सकता है।
संबंधित सवाल
नए सवाल
jms
जावा संदेश सेवा (JMS) एपीआई दो या दो से अधिक क्लाइंट के बीच संदेश भेजने के लिए जावा संदेश ओरिएंटेड मिडलवेयर (MOM) एपीआई है। JMS जावा प्लेटफॉर्म, एंटरप्राइज एडिशन का एक हिस्सा है, और जावा कम्युनिटी प्रोसेस के तहत विकसित विनिर्देश द्वारा परिभाषित किया गया है।