2013-07-31 22 views
5

मैं काफ्का के लिए नया हूं, जो उपभोक्ता के बारे में सोफर को समझ गया है, मूल रूप से दो प्रकार के कार्यान्वयन हैं।
1) The High level consumer/consumer group
2) Simple Consumerअपाचे काफ्का उपभोक्ता समूह और सरल उपभोक्ता

उच्च स्तरीय अमूर्त के बारे में सबसे महत्वपूर्ण हिस्सा यह प्रयोग किया जाता है जब काफ्का निपटने के बारे में परवाह नहीं करता है ऑफसेट, जबकि सरल उपभोक्ता ऑफसेट प्रबंधन अपने हाथ में ज्यादा बेहतर नियंत्रण प्रदान करता है। मुझे क्या भ्रम है अगर मैं एक बहुप्रचारित वातावरण में उपभोक्ता को चलाने के लिए चाहता हूं और ऑफसेट पर नियंत्रण रखना चाहता हूं। अगर मैं उपभोक्ता समूह का उपयोग करता हूं तो इसका मतलब है कि मुझे ज़ूकीपर में संग्रहीत अंतिम ऑफसेट से पढ़ना चाहिए? क्या मेरे पास एकमात्र विकल्प है।

उत्तर

6

अधिकांश भाग के लिए, उच्च स्तरीय उपभोक्ता API आपको ऑफसेट को सीधे नियंत्रित करने नहीं देता है।

जब उपभोक्ता समूह पहली बार बनाया गया है, तो आप इसे बता सकते हैं कि सबसे पुराने या नवीनतम संदेश से शुरू करना है कि कफका ने auto.offset.reset संपत्ति का उपयोग करके संग्रहीत किया है।

जब आप हाई-स्तरीय उपभोक्ताको झूठी पर सेट करके ज़ूकीपर को नए ऑफ़सेट करता है तो भी नियंत्रित कर सकते हैं।

चूंकि उच्च स्तरीय उपभोक्ता ज़ूकीपर में ऑफ़सेट स्टोर करता है, इसलिए आपका ऐप ज़ूकीपर को सीधे एक्सेस कर सकता है और ऑफसेट को कुशलतापूर्वक उपयोग कर सकता है - लेकिन यह उच्च स्तरीय उपभोक्ता API के बाहर होगा।

आपका प्रश्न थोड़ा उलझन में था लेकिन आप एक बहु थ्रेडेड वातावरण में साधारण उपभोक्ता का उपयोग कर सकते हैं। यही उच्च स्तर का उपभोक्ता करता है।

0

अपाचे काफ्का 0.9 और 0.10 में उपभोक्ता समूह प्रबंधन ब्रोकर (समन्वय के लिए) और एक विषय (राज्य भंडारण के लिए) द्वारा काफ्का आवेदन के भीतर पूरी तरह से संभाला जाता है।

एक उपभोक्ता समूह पहले एक विषय auto.offset.reset की सेटिंग निर्धारित करती है जहां उपभोक्ताओं संदेशों (http://kafka.apache.org/documentation.html#newconsumerconfigs)

उपभोग करने के लिए आप रजिस्टर कर सकते हैं एक ConsumerRebalanceListener एक सूचना प्राप्त करने के लिए एक विशेष उपभोक्ता असाइन किया गया है विषयों/विभाजन शुरू की सदस्यता लेता है।

उपभोक्ता चलने के बाद, आप seek, seekToBeginning और seekToEnd का उपयोग किसी विशिष्ट ऑफसेट से संदेश प्राप्त करने के लिए कर सकते हैं। seek अगले poll है कि उपभोक्ता के लिए प्रभावित करता है, और अगले पर संग्रहीत है प्रतिबद्ध (जैसे commitSync, commitAsync या जब auto.commit.interval समाप्त होने के, अगर सक्षम होना चाहिए।)

उपभोक्ता javadocs अधिक विशिष्ट स्थितियों का उल्लेख: http://kafka.apache.org/0100/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html

आप कफका द्वारा प्रदान किए गए समूह प्रबंधन को एक बार विभाजन (..) के माध्यम से ऑफ़सेट के मैन्युअल प्रबंधन के साथ जोड़ सकते हैं।

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