/ / Come posso gestire IOException quando Kafka non funziona? - java, exception, connect, apache-kafka

Come posso gestire IOException quando Kafka non funziona? - java, exception, connect, apache-kafka

Sto cercando di pubblicare un messaggio e Apache Kafka non funziona. Come dovrei gestire una situazione di emergenza come questa?

KafkaProducer ::Il metodo send () non genera eccezioni che potrebbero essere gestite.Il produttore li ingoia e registra gli errori invece, quindi sono invaso da messaggi come questo, e tutto si blocca fino a quando Kafka non si connetterà nuovamente.

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]

risposte:

4 per risposta № 1

Chiamata get() sul futuro restituito da Producer.send (...), o se non vuoi bloccare il tuo codice, passa a richiama.

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


-2 per risposta № 2

Penso che l'unica cosa che potresti fare è usare un try / catch per loggare tutto Throwable nel tuo codice produttore.