2008-09-01 13 views
31

यदि आप विंडोज के तहत टिकाऊ संदेश के लिए क्यूइंग उत्पाद का उपयोग करना चाहते हैं, तो .NET 2.0 और ऊपर चल रहे हैं, आज एमएसएमक्यू के कौन से विकल्प मौजूद हैं? मैं ActiveMQ (http://activemq.apache.org/) के बारे में जानता हूं, और मैंने WSMQ के संदर्भ देखे हैं (http://wsmq.net पर इंगित करते हुए), लेकिन साइट नीचे दिखाई देती है।विंडोज़ पर एमएसएमक्यू के कतार विकल्प?

क्या कोई अन्य विकल्प हैं?

+1

वह साइट (http://wsmq.net) नीचे नहीं है लेकिन डोमेन बिक्री के लिए है। मतलब WSMQ आरआईपी है! –

उत्तर

10

मैं जावा जेएमएस मैसेजिंग स्पेक के कार्यान्वयन - टिब्को ईएमएस के बारे में पर्याप्त अच्छी बातें कहने शुरू नहीं कर सकता। टिब्को ईएमएस में .NET क्लाइंट्स के लिए शानदार समर्थन है - जिसमें कॉनैक्ट फ्रेमवर्क .NET पर WinCE शामिल है। (उनके पास सी क्लाइंट लाइब्रेरी भी हैं।)

तो यदि आप विंडोज़, यूनिक्स (एईक्स/सोलारिस), लिनक्स या मैक ओएस एक्स पर चल रहे मैसेजिंग कोड से जुड़े एक विषम वितरित एप्लिकेशन का निर्माण कर रहे हैं, तो टिब्को ईएमएस है टिकट। मेरे लेख यहाँ

की जांच:

Using JMS For Distributed Software Development

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

और मैंने टिब्को ईएमएस के आसपास विषम सॉफ्टवेयर सिस्टम का निर्माण किया। रोल्ड सी # .NET Winform क्लाइंट्स जावा/जेबॉस मध्य-स्तर के साथ टिब्को ईएमएस मैसेजिंग के माध्यम से बातचीत कर रहे हैं। (और भी WinCE औद्योगिक एम्बेडेड कंप्यूटर कम्पैक्ट फ्रेमवर्क नेट TIBCO ग्राहक का उपयोग कर सकते है।)

Links To My JMS Writings

16

यहां "सर्वोत्तम अभ्यास" सलाह नहीं हो सकती है ... लेकिन वास्तविक जीवन की जरूरतों और अनुभव के आधार पर: हमने सिस्टम वितरित किया है, प्रत्येक 10 क्लाइंट चलाने वाले 60 बक्से सभी कार्य X करते हैं, और उन्हें अगले कार्य को लेने की आवश्यकता है एक कतार से। कतार को एक अन्य "ग्राहक" से खिलाया जा रहा है ...

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

हमारे लिए सबसे अच्छा समाधान था: क्यू के रूप में एक SQL डेटाबेस तालिका का उपयोग करें। वहां पहिया को फिर से न लगाएं, क्योंकि आप गलतियां करेंगे (ताले)। वहां यह जानकारी है कि इसे कैसे किया जाए, यह बहुत आसान है और हमने प्रति 24 एच 200 से अधिक संदेशों को संभाला है (60x10 = 600 समवर्ती पढ़ता है और कतार में लिखता है)। वह उसी एसक्यूएल सर्वर अनुप्रयोग सामान के बाकी से निपटने के अतिरिक्त है ...

कुछ कारण जिनकी वजह MSMQ काम नहीं करता:

  1. जब आप करने के लिए कतार के तर्क को बदलने की जरूरत फीफो नहीं, लेकिन "सबसे पुराना लाल संदेश" या "सबसे पुराना ब्लू संदेश" जैसा कुछ आप इसे नहीं कर सकते। (मुझे पता है कि लोग क्या कहेंगे, आप इसे लाल कतार और नीली कतार प्राप्त करके कर सकते हैं .. लेकिन क्या होगा यदि आवेदन के तरीके के आधार पर संख्या/प्रकार की कतार गतिशील है और दैनिक रूप से बदलती है ?)

  2. यह विफलता और तैनाती दुःस्वप्न का एक बिंदु जोड़ता है (कतार विफलता का एक बिंदु है और आपको एंटरप्राइज़ सॉफ़्टवेयर में भुगतान किए गए संदेशों को पढ़ने/लिखने के लिए सभी बक्से पर सही अनुमतियां सेट करने से निपटने की आवश्यकता है ' इन प्रकार की चीजों के लिए रक्त)। एसक्यूएल सर्वर ... सभी ग्राहकों/DB से पढ़ने को पहले से ही लिख रहे हैं, यह सिर्फ एक और तालिका है ..

+13

SQL सर्वर का उपयोग करना एमएसएमक्यू की सभी सुविधाओं के लिए प्रतिस्थापन नहीं है। एमएसएमक्यू का सही मतलब है कि केंद्रीय सर्वर ऑफ़लाइन होने पर आपके प्रत्येक 60 बॉक्स काम कर सकते हैं (जब तक उन्हें व्यस्त रखने के लिए पर्याप्त संदेश वितरित किए जाते हैं)। आपके परिदृश्य के लिए (ऑनलाइन परिदृश्य में काम वितरित करना) एसक्यूएल ने समझ में आया, लेकिन मुझे यकीन नहीं है कि यह सामान्य "एमएसएमक्यू के लिए वैकल्पिक" है। –

+1

यह एक कतार है, आप एक फीफो कतार क्यों नहीं चाहेंगे? यही एक कतार है। – Liam

+2

उल्लेख नहीं है कि 24 एच में 200k संदेश कुछ सिस्टम में कुछ भी नहीं है। – zaitsman

3

तो लागत कोई मुद्दा नहीं है (वहाँ भी एक एक्सप्रेस में SKU) तो ले 800,000 पाउंड गोरिल्ला पर एक नज़र। वेबस्पेयर एमक्यू (एमक्यू श्रृंखला)। यह व्यावहारिक रूप से किसी भी मंच पर चलता है और कई अलग-अलग कतार प्रबंधकों और संदेश पैटर्न का समर्थन करता है, यह वास्तव में यहां सूचीबद्ध करने के लिए उचित नहीं है।

+0

और यह स्पष्ट रूप से इंगित करने योग्य हो सकता है: आईबीएम वेबस्पेयर एमक्यू के लिए .NET क्लाइंट लाइब्रेरी प्रदान करता है। कोई भी .NET ऐप एक संदेश को एनक्यून नहीं कर सकता है, और एक अन्य प्लेटफॉर्म पर एक और ऐप (कहें, मेनफ्रेम पर जावा ऐप) तो इसे हटा सकता है। – Cheeso

+0

हम 'वीएमएस' ('सी' का उपयोग करके) पर वेबस्पेयर एमक्यू का उपयोग करते हैं - यह बहुत मजबूत – Matt

3

ActiveMQ का उपयोग क्यों नहीं? :)

1

यदि उच्च उपलब्धता महत्वपूर्ण है तो अमेज़ॅन एसक्यूएस देखने लायक है। यदि संदेश विभिन्न भौतिक स्थानों से आते हैं तो बहुत अधिक अतिरिक्त ओवरहेड नहीं है। सस्ता और स्केलेबल!

1

Redis इस मंच पर एक और गर्म नस्ल है। उनके सेट आधारित क्यूइंग कार्यान्वयन और पब/सब पैटर्न के साथ जांचें। यह

+0

रेडिस (लेखन के समय) वर्तमान में आधिकारिक तौर पर विंडोज पर समर्थित नहीं है। – Aryeh

+0

@Aryeh आप अपने डाउनवॉट्स के साथ बहुत शर्मीली हैं! लेकिन अब एक [विंडोज पोर्ट] (https://github.com/MSOpenTech/Redis) है, इसलिए मुझसे कोई डाउनवोट नहीं है। – jpaugh

8

The RabbitMQ framework को अनदेखा कर रहा है प्रतीत होता है। अगर लोग अभी भी परवाह करते हैं, तो इसमें .NET 2.0 कोड बेस होता है और यह नेटएमएसएमक बाइंडिंग के समान डब्ल्यूसीएफ बाध्यकारी के साथ आता है। बाध्यकारी स्वाभाविक रूप से कम से कम .NET 3.0 की आवश्यकता होती है और इसमें अंतर्निहित netMsmq बाइंडिंग की तुलना में अधिक सुविधाएं होती हैं। इसके शीर्ष पर, यह मोनो अनुकूल है। यह एक लायक है।

+2

इसके अलावा: Erlang के गैर-तुच्छ सेटअप की आवश्यकता है। –

+1

@DanEsparza हर बार मुझे Erlang स्थापित करना पड़ा था यह मृत सरल था। –

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