kafka生产者连接集群kafka集群失败
多木多多木 2016-11-12 11:39:16 报错信息如下:
Exception in thread "Thread-0" kafka.common.FailedToSendMessageException: Failed to send messages after 3 tries.
at kafka.producer.async.DefaultEventHandler.handle(Unknown Source)
at kafka.producer.Producer.send(Unknown Source)
at kafka.javaapi.producer.Producer.send(Unknown Source)
at testKafka.KafkaProducer.run(KafkaProducer.java:29)
下边是生产者源码(采用同步模式):
import java.util.Properties;
import java.util.concurrent.TimeUnit;
import kafka.javaapi.producer.Producer;
import kafka.producer.KeyedMessage;
import kafka.producer.ProducerConfig;
import kafka.serializer.StringEncoder;
/**
* KAFKA生产者编程模型:同步,异步
*
*/
public class KafkaProducer extends Thread {
private String topic;
public KafkaProducer(String topic) {
super();
this.topic = topic;
}
@Override
public void run(){
Producer producer = createProducer();
int i=0;
while(true){
producer.send(new KeyedMessage<Integer, String>(topic, "message: " + i++));
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//创建生产者对象,采用同步的消息传送方式
private Producer createProducer() {
Properties properties = new Properties();
//配置zk,主机地址+zk端口号
properties.put("zookeeper.connect","10.10.31.120:2181,10.10.31.121:2181,10.10.31.122:2181");
properties.put("serializer.class",StringEncoder.class.getName());
//配置kafka broker集群
properties.put("metadata.broker.list","10.10.31.120:9092,10.10.31.121:9092,10.10.31.122:9092");
properties.put("request.required.acks","1");
return new Producer<Integer, String>(new ProducerConfig(properties));
}
public static void main(String[] args) {
KafkaProducer kp = new KafkaProducer("topic-hahaha");
kp.start();
}
}