2015-01-26 10 views
13

Sto tentando di creare un cluster Kafka per inviare messaggi a un controllo remoto. Ho configurato tutto come descritto here. L'ho eseguito su una macchina Linux red hat e funziona perfettamente con la shell. Dopo aver scritto il codice Java come descritto nel quick start esercitazione sulla mia macchina Windows, ho ricevuto il seguente errore:Kafka - Impossibile inviare un messaggio a un server remoto utilizzando Java

... 
DEBUG kafka.client.ClientUtils$ - Successfully fetched metadata for 1 topic(s)  Set(example) 
... 
ERROR kafka.producer.SyncProducer - Producer connection to cldExampleKafka.domain:80 unsuccessful 
java.nio.channels.UnresolvedAddressException 
    ... 
    at kafka.producer.async.ProducerSendThread.run(ProducerSendThread.scala:44) 
... 
WARN kafka.producer.async.DefaultEventHandler - Failed to send producer request with correlation id 2 to broker 0 with data for patitions [ati,0] 
java.nio.channels.UnresolvedAddressException 
... 
kafka.common.FailedToSendMessageException: Failed to send message after 3 tries. 

Ho anche cercato di eseguire il vaso in un diverso computer Linux, e ancora ricevuto lo stesso errore .

Cambiare l'indirizzo in localhost ed eseguire il codice java come un jar nella macchina su cui è installato kafka.

Credo ci sia qualcosa con la configurazione, ma non ho potuto trovarlo.

risposta

25

Nella tua Kafka server.properties c'è una configurazione commentato

#advertised.host.name=<Some IP> 

Decommentare questo e aggiungere l'IP della macchina Linux in cui Kafka è in esecuzione.

advertised.host.name=<Kafka Running Machine IP> 

E connettersi dai client a <Kafka Running Machine IP> Questo dovrebbe risolvere il problema.

EDIT

Opzionalmente si può togliere il commento alla

#advertised.port=9092 

anche se si sta ascoltando su una porta diversa da quella di default.

+1

Grazie funziona! – itaied

+0

Ha anche bisogno di cambiare la configurazione del guardiano perché ho ancora problemi – xXxpRoGrAmmErxXx

+0

Ho dovuto menzionare sia host.name che advertised.host.name per farlo funzionare. – Rahul

5

lavorato con

da server.properties Decommentare

listeners=PLAINTEXT://:9092 

E

advertised.listeners=PLAINTEXT://<HOST IP>:9092 

Sostituire <HOST IP> con IP effettivo.

+1

puoi condividere la configurazione attuale –

+0

Provato il collegamento al cluster remoto di kafka da VM. VM aveva 1 interno (9.0.0.1 e ip esterno (192.1.1.1) potrei ssh solo per l'interno e non l'esterno, modifiche al mio conifg/server.properties // dare l'ip nella macchina quando si fa ifconfig o hostname -I 'code' listener = PLAINTEXT: //192.1.1.1: 9092 // dare l'ip consumer e il produttore si connetterà 'code' advertised.listeners = PLAINTEXT: //9.0.0.1: 9092 – CodeUrLife

0

Provato il collegamento al cluster remoto kafka dalla mia macchina locale.

VM aveva 1 interno (9.0.0.1 ed esterno IP (192.1.1.1) ho potuto ssh solo per l'interno & non il esterna, modifiche al mio conifg/server.properties

// dare l'ip in la macchina quando u ifconfig o hostname -I

listeners=PLAINTEXT://192.1.1.1:9092 

// danno al consumatore e produttore ip collegheranno

advertised.listeners=PLAINTEXT://9.0.0.1:9092 
Problemi correlati