2017-12-22 78 views
6

एक मुद्दा यह देखा गया है कि कफका उपभोक्ता समूह (जावा में लागू) में ब्रोकर से लगातार कुछ संदेश याद आते हैं। कफका कंसोल उपभोक्ता के माध्यम से, डीबगिंग की पहली पंक्ति के रूप में, मैं ब्रोकर में उपलब्ध उन संदेशों को देख सकता हूं।जावा काफ्का उपभोक्ता समूह कुछ संदेश उपभोग करने में असफल रहा

काफ्का दलाल संस्करण: 0.10.1.0

काफ्का क्लाइंट संस्करण:

<dependency> 
    <groupId>org.apache.kafka</groupId> 
    <artifactId>kafka_2.11</artifactId> 
    <version>0.9.0.1</version> 
</dependency> 

काफ्का उपभोक्ता विन्यास:

Properties props = new Properties(); 
props.put("bootstrap.servers","broker1,broker2,broker3"); 
props.put("group.id", "myGroupIdForDemo"); 
props.put("key.deserializer", StringDeserializer.class.getName()); 
props.put("value.deserializer", StringDeserializer.class.getName()); 
props.put("heartbeat.interval.ms", "25000"); 
props.put("session.timeout.ms", "30000"); 
props.put("max.poll.interval.ms", "300000"); 
props.put("max.poll.records", "1"); 
props.put("zookeeper.session.timeout.ms", "120000"); 
props.put("zookeeper.sync.time.ms", "10000"); 
props.put("auto.commit.enable", "false"); 
props.put("auto.commit.interval.ms", "60000"); 
props.put("auto.offset.reset", "earliest"); 
props.put("consumer.timeout.ms", "-1"); 
props.put("rebalance.max.retries", "20"); 
props.put("rebalance.backoff.ms", "6000"); 

KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props); 

संपादित करें - कुछ और जानकारी का जोड़

कुछ और जानकारी मैं करूंगा जोड़ने के लिए: कुल 6 विभाजन हैं। हालांकि, उपभोक्ता समूह आईडी वाले विषय के लिए उपभोक्ताओं की कुल संख्या 40 है। मैं समझता हूं कि 34 उपभोक्ता निष्क्रिय रहते हैं और कुछ भी नहीं करते हैं।

हालांकि, मैं जिस पहलू को समझना चाहता हूं वह यह है कि यदि कोई उपभोक्ता मृतकों को मृतक के रूप में मानता है और विभाजन को फिर से सौंपता है, तो क्या किसी निष्क्रिय उपभोक्ता को संदेश का उपभोग करने का मौका मिलेगा? संदेश का यह मुद्दा उपभोग नहीं किया जा रहा है केवल कुछ विभाजनों में ही देखा जा रहा है। मेरा मतलब है कि संदेश एक ही विभाजन से वितरित/उपभोग करने में विफल रहे हैं।

किसी भी मदद की सराहना की जाती है। धन्यवाद।

+0

क्या यह पहली/आखिरी/यादृच्छिक संदेश याद करता है? – Natalia

+0

क्या कोई अन्य प्रक्रिया/धागा 'myGroupIdForDemo' के साथ चल रहा है? क्या व्यवहार जारी रहता है, अगर आप इसे यादृच्छिक मान देते हैं? –

+0

@ नेटलिया, यह यादृच्छिक संदेश है। – thomas

उत्तर

2

ए) संदेश काफ़का में भी मौजूद नहीं हो सकता है - उस स्थिति में जांच करें कि संदेश आकार काफ़का ब्रोकर कॉन्फ़िगरेशन में अधिकतम संदेश आकार से अधिक नहीं है या नहीं।

बी) यदि आपका उपभोक्ता कफका इंस्टेंस 1 और 2-डी उदाहरण से जुड़ा हुआ नहीं है, तो आप 2-डी काफ्का से संदेश याद कर सकते हैं: इसलिए, उपभोक्ता कनेक्शन स्ट्रिंग में सभी ब्रोकर निर्दिष्ट करें।

3) अगर संदेश कफका पर मौजूद है और आप कनेक्ट हैं, तो आप संदेश को विलुप्त करने में असफल हो सकते हैं, इसलिए, एक और deserializer आज़माएं, स्ट्रिंग नहीं हो सकता है, लेकिन एक करके और देखें कि क्या होता है, संदेश खपत होगा? यदि हां, स्ट्रिंग में रूपांतरण समस्याग्रस्त है।

4) एक ही समूह आईडी के तहत काम कर रहे संदेश को "चोरी" किया जा सकता है, अद्वितीय समूह आईडी चुनें।

5) उपभोग किए गए संदेश को देखने के लिए आप किस लॉगर का उपयोग करते हैं? क्या आपको संदेह नहीं है कि यह एक लॉगर मुद्दा है?

6) क्या आप सभी संदेशों को उपभोग करने से पहले उपभोक्ता को मार सकते हैं/रोक सकते हैं?

7) क्या आप उपभोग कर सकते हैं, लेकिन उपभोक्ता स्मृति सीमाओं के कारण असफल हो सकते हैं? मेई बढ़ोतरी - एक्सएमएक्स। (ढेर आकार)

+0

हाय @ व्लादिमीर, सात अंकों में से कोई भी सत्य नहीं है। हालांकि, मुझे संदेह है कि जब विभाजन पुनर्मूल्यांकन होता है (ब्रोकर को दिल की धड़कन भेजने में उपभोक्ता में से एक के कारण), तो कुछ ऐसा हो रहा है जिसे मुझे समझने की आवश्यकता है। – thomas

+0

वर्णित मामले में उपभोक्ता डिस्कनेक्ट कर सकता है और इसलिए पुनर्विक्रय होता है। आपको उपभोक्ता डिस्कनेक्ट को रोकने की आवश्यकता है। मुझे संदेह है कि आपका उपभोक्ता हेरातबीट किसी कारण से विफल रहता है: कुछ संदेश बस आपके उपभोक्ता को मार देता है। संदेश का आकार हो सकता है, deserializer त्रुटि हो सकती है, कुछ .. –

+0

प्रतिक्रिया के लिए धन्यवाद। कोई त्रुटि नहीं है हालांकि कुछ संदेशों की प्रसंस्करण में समय लगता है; प्रसंस्करण I/O बाध्य संचालन है जैसे। डीबी में देखकर, अन्य सेवाओं के साथ बातचीत आदि। और यह विद्रोह पैदा कर रहा है। क्या आपको लगता है कि अगर मैं विद्रोह से बचने के लिए दिल की धड़कन भेजना चाहता हूं तो इस मुद्दे को हल करेगा? – thomas

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