我是初学者,今天刚跟着网络视频学习配置。
配置了3台虚拟机,ip地址分别为xx.xx.xx.145,xx.xx.xx.146,xx.xx.xx.147,然后我在windows上用eclipse写java代码
跟着视频写的java代码如下:
package com.bigdata.kafka;
import java.util.Properties;
import kafka.javaapi.producer.Producer;
import kafka.producer.KeyedMessage;
import kafka.producer.ProducerConfig;
public class ProducerTest {
private final Producer<String,String> producer;
public final static String TOPIC="test";
private ProducerTest() {
Properties props=new Properties();
//存放kafkaip地址和端口
props.put("metadata.broker.list", "xx.xx.xx.145:9092");
//配置value的序列化类
props.put("serializer.class","kafka.serializer.StringEncoder");
//配置key的序列化类
props.put("key.serializer.class", "kafka.serializer.StringEncoder");
/*
* 0:意味着生产者不等待来自broker同步完成的确认,继续发送下一条数据
* 1:producer在leader成功收到数据并确认后发送下一条message
* -1:意味着producer在follower副本确认收到数据后才算是一次完成
*/
props.put("request.required.acks", "-1");
producer=new Producer<String,String>(new ProducerConfig(props));
}
void produce() {
int messageNo=1;
final int COUNT=10;
while(messageNo<COUNT) {
String key=String.valueOf(messageNo);
String data="hello kafka message"+key;
producer.send(new KeyedMessage<String,String>(TOPIC,key,data));
System.out.println(data);
messageNo++;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new ProducerTest().produce();
}
}
报错如下:
Exception in thread "main" kafka.common.FailedToSendMessageException: Failed to send messages after 3 tries.
at kafka.producer.async.DefaultEventHandler.handle(DefaultEventHandler.scala:90)
at kafka.producer.Producer.send(Producer.scala:77)
at kafka.javaapi.producer.Producer.send(Producer.scala:33)
at com.bigdata.kafka.ProducerTest.produce(ProducerTest.java:43)
at com.bigdata.kafka.ProducerTest.main(ProducerTest.java:53)
如果我在虚拟机上,用其中一台作为producer,剩下两台作为consumer,是没有问题的,可以正常运行。但用eclipse连接就不行。防火墙我也关掉了。
关于server.properties的配置,我在xx.xx.xx.145机子上配置了host.name=该机ip地址了。
搞了大半天了还没搞定,心累。
请问一下,你看的是什么教程?
已解决.....
是advertised host name 没配置的问题...用的是0.9版的kafka,查了下,没配置advertised host name的话并不像备注里说的那样会用host.name的值....
0.9版本后,最好用listeners。
0.9版本后,最好用listeners。
好的,感谢
你的答案