काम पर मेरी टीम पर, हम आईबीएम एमक्यू प्रौद्योगिकी का उपयोग क्रॉस-एप्लिकेशन संचार के लिए बहुत करते हैं। मैंने हाल ही में हैकर न्यूज और अन्य एमक्यू प्रौद्योगिकियों जैसे RabbitMQ के बारे में अन्य स्थानों पर देखा है। मुझे इसकी मूलभूत समझ है कि यह क्या है (संदेशों को रखने और प्राप्त करने के लिए आमतौर पर चेक किया गया क्षेत्र), लेकिन मैं यह जानना चाहता हूं कि यह वास्तव में क्या अच्छा है? मुझे कैसे पता चलेगा कि मैं इसका उपयोग कब और कब करना चाहता हूं? इंटरप्रोसेस मैसेजिंग के अधिक प्राथमिक रूपों के साथ क्यों न रहें?एक एमक्यू क्या है और मैं इसका उपयोग क्यों करना चाहता हूं?
उत्तर
सभी स्पष्टीकरण अब तक सटीक और बात करने के लिए कर रहे हैं - लेकिन कुछ कमी रह गई हो सकता है: संदेश कतार का मुख्य लाभ में से एक: लचीलापन।
कल्पना कीजिए: आपको दो या तीन अन्य प्रणालियों के साथ संवाद करने की आवश्यकता है। इन दिनों एक आम दृष्टिकोण वेब सेवाएं होगी जो ठीक है अगर आपको तुरंत उत्तर की आवश्यकता है।
हालांकि: वेब सेवाएं नीचे हो सकती हैं और उपलब्ध नहीं हैं - तब आप क्या करते हैं?अपने संदेश को एक संदेश कतार में डालना (जिसमें आपकी मशीन/सर्वर पर भी एक घटक है) आम तौर पर इस परिदृश्य में काम करेगा - आपका संदेश अभी वितरित नहीं होता है और इस प्रकार अभी संसाधित नहीं होता है - लेकिन बाद में, जब यह दूसरे पर होगा सेवा के पक्ष वापस ऑनलाइन आता है।
इसलिए कई मामलों में, अलग-अलग प्रणालियों को जोड़ने के लिए संदेश कतारों का उपयोग करना संदेशों को आगे और आगे भेजने का एक अधिक विश्वसनीय, अधिक मजबूत तरीका है। यह सब कुछ के लिए अच्छी तरह से काम नहीं करता है (यदि आप वर्तमान एमएसएफटी के लिए स्टॉक मूल्य जानना चाहते हैं, तो उस कतार में यह अनुरोध विचारों का सबसे अच्छा नहीं हो सकता है) - लेकिन कई मामलों में, जैसे आपके आदेश में डालना आपूर्तिकर्ता का संदेश कतार, यह वास्तव में अच्छी तरह से काम करता है और अन्य प्रौद्योगिकियों के साथ कुछ विश्वसनीयता मुद्दों को कम करने में मदद कर सकता है।
एमक्यू बस संदेश कतार के लिए खड़ा है।
आप एक का उपयोग करेंगे जब आपको एक इंटर-प्रोसेस/क्रॉस-प्लेटफ़ॉर्म/क्रॉस-एप्लिकेशन संदेश विश्वसनीय रूप से भेजने की आवश्यकता है जो समय पर निर्भर नहीं है।
संदेश कतार संदेश प्राप्त करता है, इसे उचित कतार में रखता है, और तैयार होने पर संदेश को पुनर्प्राप्त करने के लिए एप्लिकेशन की प्रतीक्षा करता है।
संदेश कतार प्रणाली आपको कई बोनस देना चाहती है। सबसे महत्वपूर्ण लोगों में से निगरानी और लेनदेन संबंधी व्यवहार हैं।
यदि आप असफलताओं के प्रति प्रतिरोधी बनना चाहते हैं, तो बिजली की विफलता जैसे प्रतिरक्षात्मक डिजाइन महत्वपूर्ण है। कल्पना करें कि आप एटीएम मनी वापसी के बैंक सिस्टम को सूचित करना चाहते हैं, और इसे प्रति अनुरोध एक बार किया जाना चाहिए, भले ही सर्वर मध्य में अस्थायी रूप से विफल रहे हों। एमक्यू सिस्टम आपको कई डेटाबेस, एमक्यू और अन्य सिस्टम में लेनदेन को समन्वयित करने की अनुमति देगा।
कहने की जरूरत नहीं है, ऐसे सिस्टम नामित पाइप, टीसीपी या अन्य गैर-लेनदेन उपकरण की तुलना में बहुत धीमी हैं। यदि उच्च प्रदर्शन की आवश्यकता है, तो आप डिस्क के माध्यम से अपने संदेशों को लिखे जाने की अनुमति नहीं देंगे। इसके बजाय, यह आपके डिजाइन को जटिल करेगा - विदेशी विश्वसनीय और तेज़ संचार प्राप्त करने के लिए, जो डिजाइनर को वास्तव में गैर-तुच्छ चालों में धक्का देता है।
MQ सिस्टम सामान्य रूप से उपयोगकर्ताओं, कतार सामग्री देखने वाले प्लग इन, स्पष्ट queus, आदि
अच्छा जवाब, आपके इनपुट के लिए धन्यवाद! – daveslab
MQ मैसेजिंग कतार के लिए खड़ा है लिखने के लिए अनुमति देते हैं।
यह एक अमूर्त परत है जो कई मॉडलों (संभवतः विभिन्न मशीनों पर) विभिन्न मॉडलों के माध्यम से संवाद करने की अनुमति देती है (उदाहरण के लिए, पॉइंट-टू-पॉइंट, सबस्क्राइब प्रकाशित करें, आदि)। कार्यान्वयन के आधार पर यह गारंटी विश्वसनीयता, त्रुटि की सूचना, सुरक्षा, खोज, प्रदर्शन, आदि
आप सॉकेट के साथ यह सब मैन्युअल रूप से कर सकते हैं जैसी चीजों के लिए विन्यस्त किया जा सकता, लेकिन यह बहुत मुश्किल है।
उदाहरण के लिए: मान लीजिए कि आप संवाद करने के लिए प्रक्रिया करना चाहते हैं, लेकिन उनमें से एक मध्य में मर सकता है और बाद में पुनः कनेक्ट हो सकता है। आप कैसे सुनिश्चित करेंगे कि अंतरिम संदेश खो नहीं गए थे? एमक्यू समाधान आपके लिए ऐसा कर सकते हैं।
संदेश कतारों क्लासिक 'उद्यम एकीकरण पैटर्न' किताब और website में वर्णित पैटर्न के कई के लिए आधार के रूप में।
संदर्भ: वेब सेवाएं नीचे हो सकती हैं और उपलब्ध नहीं हैं - तब आप क्या करते हैं? उस के विस्तार के रूप में; क्या होगा यदि आपका स्थानीय नेटवर्क और आपका स्थानीय पीसी भी नीचे है ?? जब आप सिस्टम को आश्रित तैनात सिस्टम को अन्य जगहों पर पुनर्प्राप्त करने की प्रतीक्षा करते हैं, तो उस डेटा की प्रतीक्षा करने के लिए एक वैकल्पिक डेटा स्ट्रीम देखने की आवश्यकता होती है। अन्यथा, हो सकता है कि आज के लिए और वास्तविक भविष्य में इंटरनेट (चीजें) आईओटी की आवश्यकताओं के लिए पर्याप्त 'वास्तविक समय' प्रतिक्रिया न हो।
यदि आप विभिन्न फीफो धाराओं (कम से कम सिग्नल चेन के साथ किसी बिंदु पर) के समानांतर, गैर अस्थिर भंडारण चाहते हैं तो एक एफपीजीए और FRAM मेमोरी का उपयोग करें। FRAM घड़ी की गति पर चलता है और एफपीजीए डिवाइसों को फ्लाई जोड़ने और निकालने पर फिर से प्रोग्राम किया जा सकता है, हालांकि कई स्वतंत्र समानांतर डेटा धाराओं की आवश्यकता होती है (निश्चित रूप से स्थापित बाधाओं के भीतर)।
- 1. NHibernate क्या है और मुझे इसका उपयोग क्यों करना चाहिए?
- 2. पीडीओ क्या है और मुझे इसका उपयोग क्यों करना चाहिए?
- 3. मैं एक विधि का उपयोग करना चाहता हूं जिसे सर्वर
- 4. जेएक्सबी क्या है और मैं इसका उपयोग क्यों करूं?
- 5. रेपो क्या है और Google इसका उपयोग क्यों करता है?
- 6. तोता - क्या मैं इसका उपयोग कर सकता हूं? और कैसे?
- 7. यदि आईई 6, मैं चेतावनी देना चाहता हूं और अन्य ब्राउज़र आइकन डाउनलोड करना चाहता हूं
- 8. डीएसएल क्या है और मुझे इसका उपयोग कहां करना चाहिए?
- 9. ऐपडिलेगेट क्या है और मुझे इसका उपयोग कब करना है?
- 10. मैं एक निजी विधि का परीक्षण करना चाहता हूं - क्या मेरे डिजाइन में कुछ गड़बड़ है?
- 11. क्या मैं वास्तव में न्यूनतम तारीख वापस करना चाहता हूं?
- 12. क्या मैं हर बार Java SwingWorker का नया उदाहरण बनाना चाहता हूं जब मैं doInBackground() को आमंत्रित करना चाहता हूं?
- 13. प्रतिनिधिमंडल क्या है? मैं इसका उपयोग कब करना चाहूंगा?
- 14. मैं एक मूल्य वापस करना चाहता हूं और अपवाद बढ़ा सकता हूं, इसका मतलब है कि मैं कुछ गलत कर रहा हूं?
- 15. एंड्रॉइड पर apktool है? मैं ".smali" इकट्ठा करना चाहता हूं और एंड्रॉइड एप्लिकेशन में नया ".apk" बनाना चाहता हूं
- 16. मैं देखना चाहता हूं कि एक स्ट्रिंग
- 17. मैं क्यों मैं इस तरह कुछ करना चाहता था अजगर
- 18. मैं एक जीएई परियोजना के लिए मेवेन का उपयोग करना चाहता हूं, मैं कैसे करूँ?
- 19. .inc और इसका उपयोग क्यों करें?
- 20. कॉन्ट्रैक्ट क्लास क्या है और इसका उपयोग
- 21. रेडिस पबूब क्या है और मैं इसका उपयोग कैसे करूं?
- 22. टीडीएस प्रोटोकॉल संस्करण 8.0 क्या है और मुझे इसका उपयोग क्यों करना चाहिए?
- 23. क्या मैं (और क्या मैं कभी भी करना चाहता हूं) अधिकतम हेप आकार को .NET में सेट कर सकता हूं?
- 24. LiteralControl क्या है? इसका उपयोग क्यों किया जाता है?
- 25. मैं केवल सक्रिय एमक्यू
- 26. स्ट्रिंग के Asp.net एमवीसी डिस्प्ले टेम्पलेट, लेकिन अब हर साधारण प्रकार इसका उपयोग करना चाहता है!
- 27. मैं विम खोलना चाहता हूं और पिछले सत्र से अपने ":" कमांड देखना चाहता हूं। क्या यह संभव है?
- 28. एआरसी का उपयोग करते हुए मैं कब और क्यों स्थानीय चर को __weak घोषित करना चाहता हूं?
- 29. एमवीवीएम क्या है, और क्या इसका इस्तेमाल करना चाहिए?
- 30. सी ++/सीएलआई: मुझे इसका उपयोग क्यों करना चाहिए?
बहुत ही रोचक उपयोग केस, मेरे लिए बहुत समझ में आता है। धन्यवाद! – daveslab
तो एमक्यू सर्वर डाउन होने पर आप क्या करते हैं? यह एक वेब सेवा से अधिक लचीला नहीं है, है ना? –
@RobHolmes: आम तौर पर, आप अभी भी * अपनी स्थानीय कतार में * enqueue * कर सकते हैं - यह बैक अप होने पर कतार सर्वर पर प्रेषित किया जाएगा - और ** हाँ **, यह ** एक सामान्य वेब से अधिक लचीला है सेवा ..... –