मैं वर्तमान में ActiveMQ 5.7.0 और KahaDB का उपयोग कर रहा हूं लेकिन यदि आवश्यक हो तो अपग्रेड करने के लिए खुला हूं। मैं एक एम्बेडेड ब्रोकर का उपयोग करता हूं और प्लगइन बनाने और प्रोग्रामर के ब्रोकर कॉन्फ़िगरेशन को नियंत्रित करने में अनुभवी हूं।ActiveMQ में क्या खुले उपभोक्ता लेनदेन के लिए आवश्यक स्मृति को सीमित करना संभव है?
मेरे आवेदन में मैं एक लेनदेन सत्र पर उपभोक्ता बना रहा हूं। उपभोक्ता डेटा को दूसरी सेवा में स्थानांतरित कर रहा है (ActiveMQ नहीं)। यह सेवा मुझे काम करने की अनुमति देती है लेकिन ये काम महंगा हो सकती है। मैंने पाया है कि सत्र से खपत किए गए असामान्य संदेश ब्रोकर की स्मृति में आयोजित किए जाते हैं। ब्रोकर मेमोरी संसाधनों को मुक्त करने के लिए मुझे अधिक से अधिक प्रतिबद्ध करने की आवश्यकता है। आदर्श रूप से जब मैं ActiveMQ मेमोरी उपयोग पर विचार किए बिना काम करता हूं तो मैं नियंत्रित करना चाहता हूं।
मेरे वर्तमान एल्गोरिथ्म है:
- संदेश प्राप्त होता है
- संदेश का अनुवाद और उपभोक्ता साइड स्थान बचाने के लिए शरीर को साफ (
msg.clearBody()
) - भेजने संदेश सेवा के लिए
- समय-समय पर कतार मेमोरी उपयोग की जाँच
- यदि ब्रोकर मेमोरी महत्वपूर्ण है,
मैं ऐसा करने में सक्षम होना चाहते हैं क्या है:
- संदेश प्राप्त होता है
- संदेश का अनुवाद करने और शरीर को साफ उपभोक्ता साइड स्थान बचाने के लिए (
msg.clearBody()
) - भेजने की सेवा के लिए
- संदेश समय-समय पर कतार डिस्क उपयोग
- अगर दलाल डिस्क उपयोग महत्वपूर्ण है, के लिए प्रतिबद्ध
मैंने File based cursor पर देखा है और ऐसा लगता है कि यह मेरी ज़रूरत के अनुसार कर सकता है, लेकिन जब मैंने इसका उपयोग करने की कोशिश की, तो ऐसा वांछित प्रभाव प्रतीत नहीं हुआ। एक similar question को अतीत में ActiveMQ उपयोगकर्ता के चर्चा समूह पर भी पूछा गया है।
अद्यतन
एक स्पष्टीकरण। हमारा मुद्दा खुले लेनदेन में संदेशों की संख्या के साथ नहीं बल्कि संदेशों के आकार के साथ है। हमारे आवेदन को अक्सर बड़े संदेशों (> 50 एमबी) से निपटना पड़ता है। इस मुद्दे के अलावा, ActiveMQ इस आकार के संदेशों के साथ काफी अच्छी तरह से काम कर रहा है। जो हम खोज रहे हैं वह ब्रोकर पर msg.clearBody()
जैसे कुछ ट्रिगर करने का एक तरीका है जब स्मृति संसाधन समाप्त हो जाते हैं। फिर यदि संदेश सामग्री की आवश्यकता होती है तो ब्रोकर उन्हें डिस्क-समर्थित स्टोर से पुनः लोड कर सकता है। हम इसे प्राप्त करने के लिए प्लगइन या एक्सटेंशन के विकास के लिए खुले हैं।
आपके लिंक को इस प्रश्न के साथ कुछ भी नहीं लगता है। –
अच्छी पकड़ - धन्यवाद। मैंने यूआरएल को सही किया। – ash