2010-05-19 10 views
26

काम पर मेरी टीम पर, हम आईबीएम एमक्यू प्रौद्योगिकी का उपयोग क्रॉस-एप्लिकेशन संचार के लिए बहुत करते हैं। मैंने हाल ही में हैकर न्यूज और अन्य एमक्यू प्रौद्योगिकियों जैसे RabbitMQ के बारे में अन्य स्थानों पर देखा है। मुझे इसकी मूलभूत समझ है कि यह क्या है (संदेशों को रखने और प्राप्त करने के लिए आमतौर पर चेक किया गया क्षेत्र), लेकिन मैं यह जानना चाहता हूं कि यह वास्तव में क्या अच्छा है? मुझे कैसे पता चलेगा कि मैं इसका उपयोग कब और कब करना चाहता हूं? इंटरप्रोसेस मैसेजिंग के अधिक प्राथमिक रूपों के साथ क्यों न रहें?एक एमक्यू क्या है और मैं इसका उपयोग क्यों करना चाहता हूं?

उत्तर

40

सभी स्पष्टीकरण अब तक सटीक और बात करने के लिए कर रहे हैं - लेकिन कुछ कमी रह गई हो सकता है: संदेश कतार का मुख्य लाभ में से एक: लचीलापन।

कल्पना कीजिए: आपको दो या तीन अन्य प्रणालियों के साथ संवाद करने की आवश्यकता है। इन दिनों एक आम दृष्टिकोण वेब सेवाएं होगी जो ठीक है अगर आपको तुरंत उत्तर की आवश्यकता है।

हालांकि: वेब सेवाएं नीचे हो सकती हैं और उपलब्ध नहीं हैं - तब आप क्या करते हैं?अपने संदेश को एक संदेश कतार में डालना (जिसमें आपकी मशीन/सर्वर पर भी एक घटक है) आम तौर पर इस परिदृश्य में काम करेगा - आपका संदेश अभी वितरित नहीं होता है और इस प्रकार अभी संसाधित नहीं होता है - लेकिन बाद में, जब यह दूसरे पर होगा सेवा के पक्ष वापस ऑनलाइन आता है।

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

+0

बहुत ही रोचक उपयोग केस, मेरे लिए बहुत समझ में आता है। धन्यवाद! – daveslab

+1

तो एमक्यू सर्वर डाउन होने पर आप क्या करते हैं? यह एक वेब सेवा से अधिक लचीला नहीं है, है ना? –

+1

@RobHolmes: आम तौर पर, आप अभी भी * अपनी स्थानीय कतार में * enqueue * कर सकते हैं - यह बैक अप होने पर कतार सर्वर पर प्रेषित किया जाएगा - और ** हाँ **, यह ** एक सामान्य वेब से अधिक लचीला है सेवा ..... –

2

एमक्यू बस संदेश कतार के लिए खड़ा है।

आप एक का उपयोग करेंगे जब आपको एक इंटर-प्रोसेस/क्रॉस-प्लेटफ़ॉर्म/क्रॉस-एप्लिकेशन संदेश विश्वसनीय रूप से भेजने की आवश्यकता है जो समय पर निर्भर नहीं है।

संदेश कतार संदेश प्राप्त करता है, इसे उचित कतार में रखता है, और तैयार होने पर संदेश को पुनर्प्राप्त करने के लिए एप्लिकेशन की प्रतीक्षा करता है।

6

संदेश कतार प्रणाली आपको कई बोनस देना चाहती है। सबसे महत्वपूर्ण लोगों में से निगरानी और लेनदेन संबंधी व्यवहार हैं।

यदि आप असफलताओं के प्रति प्रतिरोधी बनना चाहते हैं, तो बिजली की विफलता जैसे प्रतिरक्षात्मक डिजाइन महत्वपूर्ण है। कल्पना करें कि आप एटीएम मनी वापसी के बैंक सिस्टम को सूचित करना चाहते हैं, और इसे प्रति अनुरोध एक बार किया जाना चाहिए, भले ही सर्वर मध्य में अस्थायी रूप से विफल रहे हों। एमक्यू सिस्टम आपको कई डेटाबेस, एमक्यू और अन्य सिस्टम में लेनदेन को समन्वयित करने की अनुमति देगा।

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

MQ सिस्टम सामान्य रूप से उपयोगकर्ताओं, कतार सामग्री देखने वाले प्लग इन, स्पष्ट queus, आदि

+0

अच्छा जवाब, आपके इनपुट के लिए धन्यवाद! – daveslab

11

MQ मैसेजिंग कतार के लिए खड़ा है लिखने के लिए अनुमति देते हैं।

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

आप सॉकेट के साथ यह सब मैन्युअल रूप से कर सकते हैं जैसी चीजों के लिए विन्यस्त किया जा सकता, लेकिन यह बहुत मुश्किल है।

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

0

संदेश कतारों क्लासिक 'उद्यम एकीकरण पैटर्न' किताब और website में वर्णित पैटर्न के कई के लिए आधार के रूप में।

0

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

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

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