2016-06-29 7 views
23

मै मैसेजिंग सिस्टम सीखने की कोशिश कर रहा हूं। मैंने पाया है कि खरगोशएमक और एनएस सर्विसबस कुछ स्थानों पर एक साथ उपयोग कर रहे हैं। मेरे प्रश्नNServiceBus और Rabbit MQ या Kafka

  1. यदि मैं RabbitMQ का उपयोग कर रहा हूं तो मुझे NServiceBus की आवश्यकता क्यों है? और इसके विपरीत
  2. क्या NServiceBus कर सकता है लेकिन RabbitMQ या Kafka नहीं कर सकता?
  3. क्या मैं NServiceBus और kafka का एक साथ उपयोग कर सकता हूं? या अपाचे-काफ्का को NServiceBus
+0

आपके दूसरे [प्रश्न] से संबंधित (http://stackoverflow.com/questions/9558128/specific-advantages-of-nservicebus-over-plan-rabbitmq) – vappolinario

+0

@vappolinario इसके लिए धन्यवाद। क्या यह कफका के लिए समान है? – MJK

+0

मैंने कभी कफका का उपयोग नहीं किया है, इसलिए मुझे नहीं पता – vappolinario

उत्तर

46

साल पहले, मैंने खुद से यही प्रश्न पूछा था। मैं एक अलग संदेश कतार के साथ काम करने के लिए NServiceBus को देख रहा था, लेकिन सवाल वही था।

मैंने NServiceBus का उपयोग न करने का निर्णय लिया।

6 महीने बाद, मुझे एहसास हुआ कि मैंने एनएस सर्विसबस के आधे हिस्से का फिर से निर्माण किया था ... केवल इतना ही खराब।

रैबिटएमक्यू के साथ आपको NServiceBus की आवश्यकता क्यों होगी, यह पूछना है कि आपको एएसपी.नेट एमवीसी, या विनफॉर्म, या एक्सएएमएल, या .NET के किसी भी अंतर्निहित पुस्तकालयों के साथ .NET Framework की आवश्यकता क्यों होगी। जहाजों के साथ, जब आपके पास आम भाषा रनटाइम होता है।

क्या सीएलआर पर्याप्त नहीं होना चाहिए, आखिरकार?

बेशक नहीं। रनटाइम होने पर कौन सा कोड निष्पादित कर सकता है - एमएसआईएल दुभाषिया और निष्पादन इंजन - उत्पादक होने के लिए लगभग पर्याप्त नहीं है।

निश्चित रूप से, आप कमांड लाइन अनुप्रयोग लिख सकते हैं जो इनपुट लेते हैं और उत्पादन का उत्पादन करते हैं। लेकिन सामान्य पुस्तकालयों के बिना वास्तविक अनुप्रयोग बनाने का प्रयास करें - अंतर्निहित SQL सर्वर ड्राइवरों के बिना; बिना किसी तीसरे पक्ष के नियंत्रण या पुस्तकालयों के। System.Windows नामस्थान के बिना एक विंडोज डेस्कटॉप ऐप बनाएं।

आपको संग्रह, और डेटाबेस पहुंच, और विंडो ऑब्जेक्ट्स और यूआई नियंत्रण देने के लिए आपको उन पुस्तकालयों की आवश्यकता है।

इसी प्रकार, खरगोश एमक्यू आपको शुरू करने और काम करने के लिए आवश्यक सब कुछ देता है, लेकिन उत्पादकता को बनाए रखने के लिए पर्याप्त नहीं है।

निश्चित रूप से, आप RabbitMQ के लिए .NET ड्राइवर को पकड़ सकते हैं और संदेशों का उत्पादन और उपभोग शुरू कर सकते हैं।

थोड़ी देर के लिए, यह ठीक काम करेगा।

बहुत जल्द, आप खुद को ड्राइवर के चारों ओर एक रैपर बना पाएंगे, ताकि आप लिखने के लिए आवश्यक कोड की मात्रा को कम कर सकें।

फिर आपको खुद को एके बनाम नाक से निपटने की आवश्यकता होगी, और आप इसके लिए एक साधारण एपीआई तैयार करेंगे।

फिर मृत-पत्र पंक्तियों की आवश्यकता नाक कॉल के साथ पॉप अप हो जाएगी, और आप इसे अपने एपीआई में लपेट लेंगे - निश्चित रूप से खरगोश चालक की तुलना में सरलीकृत।

आखिरकार, आप जहरीले संदेशों से निपटना चाहते हैं - संदेश जो विकृत हैं और अपवाद पैदा कर रहे हैं। एक बार फिर, आप इसके लिए एक-ऑफ कोड नहीं लिखना चाहते हैं, इसलिए आप इसे संभालने के लिए एक लाइब्रेरी लिखेंगे।

सूची चालू और चालू होती है।

अब से 6 महीने, आप अपने आप को आधे लिखित, मुश्किल से निर्दिष्ट, अस्थिर पुस्तकालय के साथ काम करेंगे जो केवल NServiceBus (या MassTransit या जो भी अन्य सेवा बस लाइब्रेरी आप चुनते हैं) की मूल्य और क्षमताओं की नकल करता है।

मैं नहीं कहूंगा कि आपको NServiceBus का उपयोग करना होगा। और मैं कहूंगा कि आपको सीखना चाहिए कि बिना खरगोश एमक्यू कैसे काम करता है। लेकिन एक बार जब आप संदेशों को भेजने और प्राप्त करने की मूल बातें प्राप्त कर लेते हैं, तो NServiceBus और अन्य सेवा बस कार्यान्वयन का मूल्य बहुत स्पष्ट हो जाता है।

+0

मुझे अंत में एक संक्षिप्त जवाब है! "रैबिटएमक्यू के साथ आपको NServiceBus की आवश्यकता क्यों होगी, यह पूछना है कि आपको एएसपी.नेट एमवीसी, या विनफॉर्म, या एक्सएएमएल, या अंतर्निर्मित पुस्तकालयों के साथ .NET Framework की आवश्यकता क्यों होगी, जिसमें .NET जहाजों के साथ, जब आपके पास कमांड भाषा रनटाइम होता है। " annnd मैं उस ट्वीट करने जा रहा हूँ। –

+0

एक बहुत अच्छी स्पष्ट व्याख्या @ डेरिक। इसका विस्तार करने के लिए अपना समय लेने के लिए बहुत धन्यवाद। अब यह काफी स्पष्ट है – MJK

+0

धन्यवाद, अच्छी तरह लिखा है। –

1

ऐसा लगता है कि एनएस सर्विसबस में काफ्का परिवहन के लिए सामुदायिक समर्थन है: https://docs.particular.net/nservicebus/kafka/ (अभी तक इसे स्वयं नहीं किया है)।

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