/ / काफ्का के डाउन होने पर मैं IOException को कैसे संभाल सकता हूं - जावा, अपवाद, कनेक्ट, अपाचे-काफ्का

जब कफका नीचे आती है तो मैं IOException को कैसे संभाल सकता हूं? - जावा, अपवाद, कनेक्ट, अपाचे-काफ्का

मैं संदेश प्रकाशित करने का प्रयास कर रहा हूं, और अपाचे काफ्का नीचे है। मुझे इस तरह की आपातकालीन स्थिति को कैसे संभालना चाहिए?

KafkaProducer ::send () मेथड doesn "t कोई अपवाद जो संभाला जा सकता है फेंक दें। निर्माता उन्हें निगलता है और इसके बजाय त्रुटियों को लॉग करता है, इसलिए मुझे इस तरह के संदेशों से बाढ़ आ जाती है, और जब तक काफ्का फिर से जुड़ नहीं जाता तब तक सब कुछ लटका रहता है।

2014-03-31 09:38:23.752 ERROR o.a.kafka.common.network.Selector - Error in I/O:
java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.7.0_51]
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) ~[na:1.7.0_51]
at org.apache.kafka.common.network.Selector.poll(Selector.java:205) ~[kafka-clients-0.8.1.jar:na]
at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:212) [kafka-clients-0.8.1.jar:na]
at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:150) [kafka-clients-0.8.1.jar:na]
at java.lang.Thread.run(Thread.java:744) [na:1.7.0_51]

उत्तर:

उत्तर № 1 के लिए 4

कॉल get() द्वारा भविष्य में लौटा Producer.send (...), या यदि आप अपना कोड ब्लॉक नहीं करना चाहते हैं, तो पास करें वापस कॉल करें.

try { producer.send(new ProducerRecord("mytopic", key, value)) .get(); // block until acknowledged } catch(Exception e) { // handle message wasn"t acknowledged }


उत्तर के लिए -2 № 2

मुझे लगता है कि एक चीज जो आप कर सकते हैं वह है सभी को लॉग करने के लिए एक कोशिश / कैच का उपयोग करना Throwable अपने निर्माता कोड में।