RabbitMQ एक ठोस, सामान्य-उद्देश्य वाला संदेश ब्रोकर है जो कई प्रोटोकॉल जैसे AMQP, MQTT, STOMP आदि का समर्थन करता है। यह उच्च थ्रूपुट को संभाल सकता है। RabbitMQ के लिए एक सामान्य उपयोग का मामला पृष्ठभूमि की नौकरियों या लंबे समय तक चलने वाले कार्य को संभालने के लिए है, जैसे फ़ाइल स्कैनिंग , छवि स्केलिंग या पीडीएफ रूपांतरण। RabbitMQ का उपयोग माइक्रोसर्विस के बीच भी किया जाता है, जहां यह अनुप्रयोगों के बीच संवाद करने के माध्यम के रूप में कार्य करता है, संदेश भेजने में आने वाली अड़चनों से बचता है।
काफ्का एक मैसेज बस है जो हाई-इनग्रेस डेटा स्ट्रीम और रीप्ले के लिए अनुकूलित है । जब आपको बड़ी मात्रा में डेटा स्थानांतरित करने, वास्तविक समय में डेटा संसाधित करने या एक समय अवधि में डेटा का विश्लेषण करने की आवश्यकता होती है, तो काफ्का का उपयोग करें। दूसरे शब्दों में, जहां डेटा एकत्र करने, संग्रहीत करने और संभाले जाने की आवश्यकता होती है। एक उदाहरण है जब आप एक वेबस्पॉप पर उपयोगकर्ता गतिविधि को ट्रैक करना चाहते हैं और खरीदने के लिए सुझाए गए आइटम उत्पन्न करते हैं। एक अन्य उदाहरण ट्रैकिंग, अंतर्ग्रहण, लॉगिंग या सुरक्षा के लिए डेटा विश्लेषण है।
काफ्का को एक टिकाऊ संदेश ब्रोकर के रूप में देखा जा सकता है जहां एप्लिकेशन डिस्क पर स्ट्रीम डेटा को प्रोसेस और री-प्रोसेस कर सकते हैं। काफ्का के पास बहुत ही सरल मार्ग है। अगर आपको अपने संदेशों को जटिल तरीके से अपने उपभोक्ताओं तक पहुँचाने की आवश्यकता है तो RabbitMQ के पास बेहतर विकल्प हैं। काफ्का का उपयोग करें यदि आपको बैच उपभोक्ताओं का समर्थन करने की आवश्यकता है जो ऑफ़लाइन हो सकते हैं या ऐसे उपभोक्ता जो कम विलंबता पर संदेश चाहते हैं।
कफ़्का के डेटा को पढ़ने के तरीके को समझने के लिए, हमें सबसे पहले इसके उपभोक्ताओं और उपभोक्ता समूहों को समझने की आवश्यकता है। विभाजन आपको कई नोड्स में डेटा को विभाजित करके एक विषय को समानांतर बनाने की अनुमति देता है। एक विभाजन में प्रत्येक रिकॉर्ड को इसकी अद्वितीय ऑफसेट द्वारा सौंपा और पहचाना जाता है। यह एक विभाजन में रिकॉर्ड की ओर संकेत करता है। काफ्का के नवीनतम संस्करण में, काफ्का विभाजन में प्रत्येक रिकॉर्ड के लिए एक संख्यात्मक ऑफसेट रखता है। काफ्का में एक उपभोक्ता या तो स्वचालित रूप से समय-समय पर ऑफ़सेट कर सकता है, या वह इस प्रतिबद्ध स्थिति को मैन्युअल रूप से नियंत्रित करना चुन सकता है। RabbitMQ सभी राज्यों को उपभोग / स्वीकार / अनजाने संदेशों के बारे में रखेगा। मुझे काफ्का को रैबिटएमक्यू के मामले की तुलना में समझने के लिए अधिक जटिल लगता है, जहां एक बार यह संदेश एक बार कतार से हटा दिया जाता है।
जब वे खाली होते हैं तो RabbitMQ की कतारें सबसे तेज़ होती हैं, जबकि काफ्का बहुत कम ओवरहेड के साथ बड़ी मात्रा में डेटा बरकरार रखता है - काफ्का को बड़ी मात्रा में संदेशों को रखने और वितरित करने के लिए डिज़ाइन किया गया है। (यदि आप RabbitMQ में बहुत लंबी कतारों की योजना बनाते हैं तो आप आलसी कतारों पर एक नज़र डाल सकते हैं ।)
काफ्का जमीन से क्षैतिज स्केलिंग (अधिक मशीनों को जोड़कर स्केल) को ध्यान में रखकर बनाया गया है, जबकि रैबिटएमक्यू ज्यादातर वर्टिकल स्केलिंग (अधिक शक्ति जोड़कर स्केल) के लिए डिज़ाइन किया गया है।
RabbitMQ में एक अंतर्निहित उपयोगकर्ता के अनुकूल इंटरफेस है जो आपको वेब ब्राउज़र से अपने RabbitMQ सर्वर को मॉनिटर करने और संभालने की सुविधा देता है। अन्य चीजों में, कतार, कनेक्शन, चैनल, एक्सचेंज, उपयोगकर्ता और उपयोगकर्ता की अनुमति को ब्राउज़र में संभाला, बनाया, हटाया और सूचीबद्ध किया जा सकता है और आप संदेश दरों की निगरानी कर सकते हैं और मैन्युअल रूप से संदेश भेज / प्राप्त कर सकते हैं। कफ़्का में कई ओपन-सोर्स टूल हैं, और कुछ वाणिज्यिक भी हैं , जो प्रशासन और निगरानी कार्यों की पेशकश करते हैं। मैं कहूंगा कि RabbitMQ की अच्छी समझ पाने के लिए यह आसान / तेज़ हो गया है।
अधिक पढ़ने और कुछ तुलनात्मक डेटा यहां देखे जा सकते हैं: https://www.cloudamqp.com/blog/2019-12-12-when-to-use-rabbitmq-or-apache-kafka.html
उद्योग पत्र की भी सिफारिश: "काफ्का बनाम रैबिटएमक्यू: दो उद्योग संदर्भ प्रकाशन / सदस्यता कार्यान्वयन का तुलनात्मक अध्ययन": http://dl.acm.org/citation.cfm?id=3093908
मैं Apache Kafka और RabbitMQ दोनों को एक सेवा प्रदान करने वाली कंपनी में काम करता हूं।