2015-03-17 14 views
6

Ich habe kafka auf einem einzigen Knoten eingerichtet und zookeeper sowie Kafka-Server gestartet.Ich habe es für interne Produzent und Verbraucher auf der Konsole getestet und es funktioniert gut.Aber wenn ich Ich betreibe einen internen Kafka-Konsumenten auf der Konsole und mein eigener Produzent funktioniert nicht.Kann nicht kommunizieren mit Kafka-Server mit kafka Producer API

Unten ist mein Produzent Klasse

Properties props = new Properties(); 

    props.put("metadata.broker.list", "xx.xx.xx.xx:9092"); 
    props.put("serializer.class", "kafka.serializer.StringEncoder"); 
    props.put("partitioner.class", "com.example.producer.SimplePartitioner"); 
    props.put("request.required.acks", "1"); 

    ProducerConfig config = new ProducerConfig(props); 

    Producer<String, String> producer = new Producer<String, String>(config); 
    KeyedMessage<String, String> data = new KeyedMessage<String, String>(
      "mails", "xxxx"); 
    producer.send(data); 

Wenn die Steuerung der producer.send erreicht(), es stoppt nach 3 Versuchen mit der folgenden Ausnahme

java.nio.channels.ClosedChannelException 
at kafka.network.BlockingChannel.send(BlockingChannel.scala:100) 
at kafka.producer.SyncProducer.liftedTree1$1(SyncProducer.scala:73) 
at kafka.producer.SyncProducer.kafka$producer$SyncProducer$$doSend(SyncProducer.scala:72) 
at kafka.producer.SyncProducer.send(SyncProducer.scala:113) 
at kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:58) 
at kafka.producer.BrokerPartitionInfo.updateInfo(BrokerPartitionInfo.scala:82) 
at kafka.producer.async.DefaultEventHandler$$anonfun$handle$2.apply$mcV$sp(DefaultEventHandler.scala:78) 
at kafka.utils.Utils$.swallow(Utils.scala:172) 
at kafka.utils.Logging$class.swallowError(Logging.scala:106) 
at kafka.utils.Utils$.swallowError(Utils.scala:45) 
at kafka.producer.async.DefaultEventHandler.handle(DefaultEventHandler.scala:78) 
at kafka.producer.Producer.send(Producer.scala:77) 
at kafka.javaapi.producer.Producer.send(Producer.scala:33) 
+0

können Sie bitte versuchen, die 'props.put (" partitioner.class "," com.example.producer.SimplePartitioner ")' part – user2720864

Antwort

3

ich kafka zu verbinden versuche Server von einer Producer-Klasse in Eclipse von einer externen VM. Ich musste localhost durch die IP-Adresse in der producer.properties in Config/von Kafka ersetzen.

+0

kommentieren Sie auch IP in/etc/hosts-Datei – Shams

Verwandte Themen