2012-10-01 45 views
5

मैं (जावा) मैसेजिंग & पर एक व्यापार अध्ययन कर रहा हूं, एक प्रमुख वेब एप्लिकेशन के लिए बैक-एंड फ्रेमवर्क के आगामी पुन: डिज़ाइन के लिए क्यूइंग सिस्टम (अमेज़ॅन के ईसी 2 क्लाउड पर) , एक्स-बड़े उदाहरण)। मैं वर्तमान में ActiveMQ और RabbitMQ का मूल्यांकन कर रहा हूं।जावा मैसेजिंग और क्यूइंग सिस्टम के साथ दृढ़ता का उपयोग कब करें

योजना 5 अलग-अलग कतार है, जिसमें एक मृत-पत्र कतार है। प्रति दिन भेजे गए संदेशों की संख्या 40 के और 400 के बीच कहीं भी होगी। चूंकि मैं डेटा सामग्री पर किसी XML फ़ाइल स्थान के लिए संदेश सामग्री के लिए एक सूचक होने की योजना बना रहा हूं, इसलिए मुझे उम्मीद है कि संदेश लगभग 64 बाइट होंगे। हालांकि, मूल्यांकन उद्देश्यों के लिए, मैं संदेशों में कच्चे एक्सएमएल को 3KB के औसत फ़ाइल आकार के साथ भेजने पर विचार करना चाहूंगा।

मेरा मुख्य प्रश्न: दैनिक आधार पर कब/कितने संदेश बनाए रखा जाना चाहिए? क्या ऊपर उल्लिखित रकम पर विचार करते हुए सभी संदेशों को जारी रखना उचित है? मुझे पता है कि लगातार प्रदर्शन कम हो जाएगा, शायद बहुत से। लेकिन, जारी नहीं रहकर, बहुत सी रैम का उपयोग किया जा रहा है। आप में से कुछ क्या सिफारिश करेंगे?

इसके अलावा, मुझे पता है कि ActiveMQ (JMS) बनाम RabbitMQ (AMQP) के बारे में बहुत सारी जानकारी ऑनलाइन है। मैंने शोध और परीक्षण का एक टन किया है। ऐसा लगता है कि या तो कार्यान्वयन मेरी आवश्यकताओं के अनुरूप होगा। मैंने जो जानकारी प्रदान की है (फ़ाइल आकार और # संदेशों में से) को ध्यान में रखते हुए, क्या कोई किसी विशेष विक्रेता का उपयोग करने के लिए किसी कारण को इंगित कर सकता है जिसे मैं याद कर सकता हूं?

धन्यवाद!

उत्तर

2

दैनिक आधार पर कब/कितने संदेश बनाए रखा जाना चाहिए? क्या यह ऊपर उल्लिखित राशि पर विचार करने के लिए सभी संदेशों को जारी रखने के लिए उचित है?

जेएमएस दृढ़ता डेटाबेस को प्रतिस्थापित नहीं करती है, इसे उत्पादकों और डेटा के उपभोक्ताओं के बीच एक अल्पकालिक बफर माना जाना चाहिए। उस ने कहा, आपके द्वारा उल्लेख किए गए संदेशों की मात्रा/आकार किसी भी आधुनिक जेएमएस सिस्टम (किसी भी तरह से कॉन्फ़िगर किया गया है) पर दृढ़ता एडाप्टर कर नहीं लगाएगा और आवश्यकतानुसार विस्तारित अवधि के लिए संदेशों को बफर करने के लिए उपयोग किया जा सकता है (केवल reliable message store architecture का उपयोग करें)

मुझे पता है कि लगातार प्रदर्शन कम हो जाएगा, शायद बहुत से। लेकिन, जारी नहीं रहकर, बहुत सी रैम का उपयोग किया जा रहा है। में से कुछ आप क्या सुझाएंगे?

मेरे अनुभव में, संदेश दृढ़ता को सक्षम करना एक महत्वपूर्ण प्रदर्शन हिट नहीं है और लगभग हमेशा संदेशों की गारंटी के लिए किया जाता है। अधिकांश अनुप्रयोगों के लिए, अपस्ट्रीम (उत्पादक) या डाउनस्ट्रीम (उपभोक्ताओं) की प्रक्रियाएं बाधाएं होती हैं (विशेष रूप से डेटाबेस I/O) ...नहीं JMS भंडार

भी हठ, मुझे पता है ऑनलाइन ActiveMQ (JMS) बनाम RabbitMQ (AMQP) के बारे में जानकारी का एक बहुत कुछ नहीं है। मैंने शोध का एक टन किया है और परीक्षण किया है। ऐसा लगता है कि या तो कार्यान्वयन मेरी आवश्यकताओं के अनुरूप होगा। मैंने जो जानकारी प्रदान की है, उसे देखते हुए (फ़ाइल आकार और #संदेशों में से #), क्या कोई भी किसी विशेष विक्रेता का उपयोग करने के लिए किसी कारण को इंगित कर सकता है जिसे मैं याद कर सकता हूं?

मैंने कम और उच्च मात्रा संदेश दोनों के लिए कई परियोजनाओं पर सक्रिय एमक्यू का सफलतापूर्वक उपयोग किया है। मैं Apache Camel की तरह एक मार्ग इंजन के साथ इसे प्रयोग कारगर बनाने के लिए integration और complex routing patterns

+0

आप बहुत मददगार रहे हैं, मेरे सवालों के जवाब देने के लिए धन्यवाद! – littleK

3

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

संदेश दृढ़ता पर निर्णय इस बात पर निर्भर करता है कि संदेश कितना महत्वपूर्ण है और इसे किसी संदेश प्रदाता को पुनरारंभ करने की आवश्यकता होती है।

आप आईबीएम वेबस्पियर एमक्यू पर एक नज़र रखना चाहते हैं। यह आपकी आवश्यकताओं को पूरा कर सकता है। इसमें अनुप्रयोगों के विकास के लिए जेएमएस और मालिकाना एपीआई भी है।

0

ActiveMQ की सलाह देते हैं खुला स्रोत JMS के लिए एक अच्छा विकल्प है, और अधिक महंगी वाले मैं सिफारिश कर सकते हैं TIBCO ईएमएस या शायद सांत्वना कर रहे हैं।

लेकिन वास्तव में जेएमएस वास्तव में एक बार वितरण के लिए बनाया गया है और विनिर्देशन से अधिक दृढ़ता बरकरार है। आप निश्चित रूप से डेटाबेस जा सकते हैं, लेकिन यह भारी वजन और संभवतः महंगा है।

मैं क्या सिफारिश करूंगा (नोट: मैं कोडस्ट्रीट के लिए काम करता हूं) हमारी 'जेएमएस के लिए रीप्ले सेवा' है। यह आपको उच्च-प्रदर्शन फ़ाइल-आधारित डिस्क संग्रहण में किसी भी प्रकार के जेएमएस संदेश (या मूल वेबस्पेर एमक्यू वाले) को स्टोर करने देता है। प्रत्येक संदेश स्वचालित रूप से एक नैनोसेकंद टाइमस्टैम्प और एक वैश्विक एमजीआईडीआईडी ​​असाइन किया जाता है जिसे आप प्रकाशन पर ओवरराइट कर सकते हैं। तो एक्सएमएल संदेशों को रीप्लेसेवर द्वारा रिकॉर्ड किया जा सकता है और आपका वास्तविक संदेश केवल वैश्विक एमजीआईडीआई संदर्भ के रूप में हो सकता है। और शायद कुछ गुण?

एक बार रिसीवर वैश्विक एमजीआईडीआईडी ​​प्राप्त करने के बाद, यदि आवश्यक हो तो यह उस संदेश को रीप्लेसेवर से फिर से चला सकता है।

लेकिन दूसरी ओर, 400K * 3KB XML संदेश ActiveMQ या अन्य के लिए आसानी से करने योग्य होना चाहिए। साथ ही, आपको भेजने से पहले अपने एक्सएमएल संदेशों को संपीड़ित करना चाहिए।