हम पेशेवरों और ActiveMQ बनाम RabbitMQ बनाम ZeroMQ के पेशेवरों और विपक्षों के साथ किसी भी अनुभव को सुनने के लिए इच्छुक होंगे। किसी भी अन्य दिलचस्प संदेश कतारों के बारे में जानकारी भी स्वागत योग्य है।
हम पेशेवरों और ActiveMQ बनाम RabbitMQ बनाम ZeroMQ के पेशेवरों और विपक्षों के साथ किसी भी अनुभव को सुनने के लिए इच्छुक होंगे। किसी भी अन्य दिलचस्प संदेश कतारों के बारे में जानकारी भी स्वागत योग्य है।
जवाबों:
संपादित करें: मेरे प्रारंभिक उत्तर में AMQP पर एक मजबूत ध्यान केंद्रित किया गया था। मैंने विषय पर एक व्यापक दृष्टिकोण प्रस्तुत करने के लिए इसे फिर से लिखने का फैसला किया।
इन 3 मैसेजिंग टेक्नोलॉजी में डिस्ट्रीब्यूटेड सिस्टम पर अलग-अलग तरीके हैं:
RabbitMQ AMQP प्रोटोकॉल (Apache Qpid के साथ) के अग्रणी कार्यान्वयन में से एक है। इसलिए, यह एक दलाल वास्तुकला को लागू करता है, जिसका अर्थ है कि ग्राहकों को भेजे जाने से पहले संदेश एक केंद्रीय नोड पर कतारबद्ध होते हैं। यह दृष्टिकोण RabbitMQ का उपयोग करना और तैनात करना बहुत आसान बनाता है, क्योंकि कोडिंग की कुछ ही पंक्तियों में रूटिंग, लोड बैलेंसिंग या लगातार संदेश कतारबद्ध जैसे उन्नत परिदृश्य का समर्थन किया जाता है। हालांकि, यह इसे कम मापनीय और "धीमा" भी बनाता है क्योंकि केंद्रीय नोड में विलंबता और संदेश लिफाफे काफी बड़े हैं।
ZeroMq एक बहुत ही हल्का मैसेजिंग सिस्टम है जिसे विशेष रूप से उच्च थ्रूपुट / कम विलंबता परिदृश्यों के लिए डिज़ाइन किया गया है जैसे कि आप वित्तीय दुनिया में पा सकते हैं। ज़मेक कई उन्नत मैसेजिंग परिदृश्यों का समर्थन करता है, लेकिन RabbitMQ के विपरीत, आपको उनमें से अधिकांश को फ्रेमवर्क के विभिन्न टुकड़ों (जैसे: सॉकेट और डिवाइस) के संयोजन से लागू करना होगा। ज़मैक बहुत लचीला है, लेकिन आपको 80 पृष्ठों या गाइड का अध्ययन करना होगा (जो मैं वितरित प्रणाली लिखने वाले किसी भी व्यक्ति के लिए पढ़ने की सलाह देता हूं, भले ही आप संदेश भेजने से अधिक जटिल कुछ भी करने में सक्षम होने से पहले Zmq का उपयोग न करें)। 2 साथियों के बीच।
ActiveMQ मध्य मैदान में है। ज़मेक की तरह, यह दलाल और पी 2 पी टोपोलॉजी दोनों के साथ तैनात किया जा सकता है। RabMMQ की तरह, उन्नत परिदृश्यों को लागू करना आसान है, लेकिन आमतौर पर कच्चे प्रदर्शन की कीमत पर। यह संदेशवाहक :-) का स्विस सेना का चाकू है।
अंत में, सभी 3 उत्पादों:
आपको स्पैरो , स्टार्लिंग , केस्टेल , अमेज़ॅन एसक्यूएस , बीनस्टॉकड , काफ्का , आयरनएमक्यू क्यों याद आया ?
संदेश कतार सर्वर
संदेश कतार सर्वर विभिन्न भाषाओं में उपलब्ध हैं, एरलैंग (रैबिटएमक्यू), सी (बीनस्टॉकड), रूबी (स्टारलिंग या स्पैरो), स्काला (केस्टरेल, काफ्का) या जावा (एक्टिवएमक्यू)। एक संक्षिप्त अवलोकन यहाँ पाया जा सकता है
गौरैया
मैना
एक प्रकार का छोटा बाज
RabbitMQ
Apache ActiveMQ
Beanstalkd
अमेज़न SQS
काफ्का
ZMQ
EagleMQ
IronMQ
मुझे उम्मीद है कि यह हमारे लिए मददगार होगा। स्रोत
अधिक जानकारी से आप जानना चाहेंगे:
http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes
पॉल ने टिप्पणी में जो कुछ बताया, उसे विस्तार से बताना पेज ऊपर उल्लेख किया मर चुका है 2010 के बाद, तो नमक की एक चुटकी के साथ पढ़ा। 3 साल में बहुत सारे सामान बदले गए हैं।
यह वास्तव में आपके उपयोग-मामले पर निर्भर करता है।
ActiveMQ या RabMMQ के साथ 0MQ की तुलना उचित नहीं है। ActiveMQ और RabbitMQ मैसेजिंग सिस्टम हैं जिन्हें इंस्टालेशन और एडमिनिस्ट्रेशन की आवश्यकता होती है। वे ZeroMQ की तुलना में फीचरवाइज़ को बहुत अधिक प्रदान करते हैं। उनके पास असली लगातार कतारें हैं, लेनदेन के लिए समर्थन आदि।
ZeroMQ एक हल्का संदेश केंद्रित सॉकेट कार्यान्वयन है। यह इन-प्रोसेस अतुल्यकालिक प्रोग्रामिंग के लिए भी उपयुक्त है। ZeroMQ पर "एंटरप्राइज मैसेजिंग सिस्टम" चलाना संभव है, लेकिन आपको अपने दम पर बहुत कुछ लागू करना होगा।
इसलिए:
ActiveMQ, RabbitMQ, Websphere MQ & MSMQ "एंटरप्राइज मैसेज क्यूस" हैं
ZeroMQ एक संदेश है जो IPC लाइब्रेरी को उन्मुख करता है।
यहां RabbitMQ और ActiveMQ के बीच तुलना है । बॉक्स से बाहर, ActiveMQ को संदेश डिलीवरी की गारंटी देने के लिए कॉन्फ़िगर किया गया है - जो कम विश्वसनीय संदेश प्रणालियों की तुलना में अपनी धीमी गति दे सकता है। आप हमेशा प्रदर्शन के लिए कॉन्फ़िगरेशन बदल सकते हैं यदि आप चाहें और किसी भी अन्य संदेश प्रणाली के रूप में कम से कम अच्छा प्रदर्शन प्राप्त कर सकते हैं। कम से कम आपके पास वह विकल्प है। स्केलिंग, प्रदर्शन और उच्च उपलब्धता के लिए कॉन्फ़िगरेशन के लिए फ़ोरम और ActiveMQ FAQ पर बहुत सारी जानकारी है। इसके अलावा, ActiveMQ AMQP 1.0 का समर्थन करेगा, जब कल्पना को अंतिम रूप दिया जाएगा, साथ ही STOMP जैसे अन्य वायर प्रारूपों के साथ।
ActiveMQ के लिए एक और प्लस इसकी अपाचे परियोजना है, इसलिए डेवलपर समुदाय में विविधता है - और यह एक कंपनी से बंधा नहीं है।
मैंने ActiveMQ या RabbitMQ का उपयोग नहीं किया है, लेकिन ZeroMQ का उपयोग किया है। जैसा कि मैं इसे ZeroMQ और ActiveMQ आदि के बीच देखता हूं, बड़ा अंतर यह है कि 0MQ ब्रोकर रहित है और संदेश वितरण के लिए मज़बूती से नहीं बनाया है। यदि आप कई मैसेजिंग पैटर्न, ट्रांसपोर्ट, प्लेटफॉर्म और भाषा बाइंडिंग का समर्थन करने वाले मैसेजिंग एपीआई का उपयोग करने के लिए एक आसान की तलाश में हैं तो 0MQ निश्चित रूप से देखने लायक है। यदि आप एक पूर्ण विकसित संदेश प्लेटफ़ॉर्म की तलाश कर रहे हैं, तो 0MQ बिल फिट नहीं हो सकता है।
0MQ का उपयोग कैसे किया जा सकता है, इसके कई उदाहरणों के लिए www.zeromq.org/docs:cookbook देखें ।
मैं बिजली के उपयोग की निगरानी अनुप्रयोग में संदेश भेजने के लिए सफलतापूर्वक 0MQ का उपयोग कर रहा हूँ ( http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/ देखें )
मैं शून्यएमक्यू का उपयोग कर रहा हूं। मैं एक साधारण संदेश पासिंग सिस्टम चाहता था और मुझे किसी ब्रोकर की शिकायत की जरूरत नहीं है। मैं एक विशाल जावा उन्मुख उद्यम प्रणाली भी नहीं चाहता।
यदि आप एक तेज, सरल प्रणाली चाहते हैं और आपको कई भाषाओं का समर्थन करने की आवश्यकता है (मैं C और .net का उपयोग करता हूं) तो मैं 0MQ को देखने की सलाह दूंगा।
मैं केवल ActiveMQ के बारे में अपने 2 सेंट जोड़ सकता हूं लेकिन चूंकि यह सबसे लोकप्रिय में से एक है:
आप जिस भाषा में लिखना चाहते हैं वह महत्वपूर्ण हो सकती है। हालाँकि ActiveMQ के पास अधिकांश के लिए एक क्लाइंट है, लेकिन उनका C # कार्यान्वयन जावा लाइब्रेरी की तुलना में पूर्ण नहीं है।
इसका मतलब है कि कुछ बुनियादी कार्यक्षमता परतदार है (असफल-ओवर प्रोटोकॉल कि ... अच्छी तरह से ... कुछ मामलों में विफल रहता है, कोई पुनर्वितरण समर्थन नहीं) और अन्य बस नहीं है। चूंकि .NET इस परियोजना के लिए महत्वपूर्ण नहीं है, इसलिए विकास धीमा है और इसमें कोई रिलीज़ योजना नहीं है। ट्रंक अक्सर टूट जाता है इसलिए यदि आप इस पर विचार करते हैं, तो आप इस परियोजना में योगदान देने पर विचार कर सकते हैं यदि आप चाहते हैं कि चीजें आगे बढ़ें।
उसके बाद ActiveMQ ही है जिसमें बहुत सारे अच्छे फीचर हैं लेकिन कुछ बहुत ही अजीब मुद्दे हैं। हम स्थिरता के कारणों के लिए एक्टिवमेक के फ्यूज (प्रोग्रेस) संस्करण का उपयोग करते हैं लेकिन फिर भी कुछ अजीब "बग" हैं जिन्हें आप ध्यान में रखना चाहते हैं:
सभी और सभी, यह एक बहुत अच्छा उत्पाद है यदि आप इसके मुद्दों के साथ रह सकते हैं:
A) सक्रिय रूप से शामिल होने से डरते नहीं हैं। .NET
B का उपयोग करते समय जावा में विकसित होते हैं ;-)
इसमें दिए गए RabbitMQ ActiveMQ और QPID की सुविधाओं और प्रदर्शन की तुलना है
Http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/
व्यक्तिगत रूप से मैंने उपरोक्त तीनों को आजमाया है। RabbitMQ मेरे अनुसार सबसे अच्छा प्रदर्शन है, लेकिन इसमें विफलता और पुनर्प्राप्ति विकल्प नहीं हैं। ActiveMQ में सबसे अधिक विशेषताएं हैं, लेकिन यह धीमी है।
अद्यतन: HornetQ भी एक विकल्प है जिस पर आप गौर कर सकते हैं, यह JMS शिकायत है, अगर आप JMS आधारित समाधान की तलाश में हैं तो ActiveMQ से बेहतर विकल्प है।
मैंने यहाँ AMQP, Qpid और ZeroMQ के बारे में अपने शुरुआती अनुभव के बारे में लिखा है: http://ron.shoutboot.com/2010/09/25/is-ampq-for-you/
मेरी व्यक्तिपरक राय यह है कि AMQP ठीक है यदि आपको वास्तव में लगातार संदेश सुविधाओं की आवश्यकता है और यह भी चिंतित नहीं है कि दलाल एक अड़चन हो सकती है। इसके अलावा, C ++ क्लाइंट वर्तमान में AMQP के लिए गायब है (Qpid ने मेरा समर्थन नहीं जीता; हालांकि ActiveMQ क्लाइंट के बारे में सुनिश्चित नहीं है), लेकिन शायद प्रगति में काम कर रहा है। ZeroMQ अन्यथा रास्ता हो सकता है।
इस ब्लॉग पोस्ट की टिप्पणियों में कुछ चर्चा है , ट्विटर पर अपनी संदेश पंक्ति लिखने के बारे में, जो दिलचस्प हो सकता है।
स्टीव ने ActiveMQ, RabbitMQ, आदि का व्यापक भार और तनाव परीक्षण किया, ActiveMQ वास्तव में काफी धीमा है (Kestrel की तुलना में बहुत धीमा), RabbitMQ लगातार कई उत्पादकों और बहुत कम उपभोक्ताओं के साथ क्रैश होता है।
संभवतः आपके पास शुरू में ट्विटर जैसा लोड नहीं होगा लेकिन :)
कुछ अनुप्रयोगों में ActiveMQ के रूप में कई ट्यूनिंग कॉन्फ़िगरेशन हैं। ActiveMQ को खड़ा करने वाली कुछ विशेषताएं हैं:
विन्यास योग्य आकार। कॉन्फ़िगर करने योग्य थ्रेडिंग। कॉन्फ़िगर करने योग्य विफलता। उत्पादकों के लिए विन्यास योग्य प्रशासनिक अधिसूचना। ... पर विवरण:
अबी, यह सब आपके उपयोग के मामले में आता है। अपने उपयोग के मामले में किसी और के खाते पर भरोसा करने के बजाय, अपने उपयोग के मामले को खरगोश-चर्चा सूची में पोस्ट करने के लिए स्वतंत्र महसूस करें। ट्विटर पर पूछने पर आपको कुछ प्रतिक्रियाएँ भी मिलेंगी। शुभकामनाएं, एलेक्सिस
ZeroMQ उर्फ 0MQ के बारे में, जैसा कि आप पहले से ही जानते हैं, यह वह है जो आपको प्रति सेकंड सबसे अधिक संदेश मिलेगा (वे पिछली बार जब मैंने जाँच की थी, तब उनके रेफरी सर्वर पर लगभग 4 मिलियन प्रति सेकंड थे), लेकिन जैसा कि आप पहले से ही जानते होंगे, प्रलेखन गैर मौजूद है। आपके पास सर्वर को शुरू करने का तरीका खोजने में कठिन समय होगा, अकेले उन्हें उपयोग करने का तरीका बताएं। मुझे लगता है कि आंशिक रूप से क्यों किसी ने 0MQ के बारे में अभी तक योगदान नहीं दिया है।
मज़े करो!
यदि आप वाणिज्यिक कार्यान्वयन में भी रुचि रखते हैं, तो आपको मेरे चैनलों से निर्वाण पर एक नज़र रखना चाहिए ।
निर्वाण का उपयोग वित्तीय सेवा उद्योग में बड़े पैमाने पर कम-विलंबता व्यापार और मूल्य वितरण प्लेटफार्मों के लिए किया जाता है।
एंटरप्राइज़, वेब और मोबाइल डोमेन में क्लाइंट प्रोग्रामिंग भाषाओं की एक विस्तृत श्रृंखला के लिए समर्थन है।
क्लस्टरिंग क्षमताएं बेहद उन्नत हैं और एक नज़र के लायक हैं यदि पारदर्शी हा या लोड संतुलन आपके लिए महत्वपूर्ण है।
निर्वाण विकास प्रयोजनों के लिए डाउनलोड करने के लिए स्वतंत्र है।