最近在写一个事实流分析的业务,用到kafka,在开发过程中碰到一个小问题,Failed to send messages after 3 tries.
在想kafka发送消息的过程中出现发送失败,最初检查了一下网络,以为是本机到虚拟机通信的问题,后来发现网络状况良好。查看了一下ZK和kafka的配置,也都ok
Properties props = new Properties();
props.put("metadata.broker.list", "xx.xx.xx.xx:9092");
props.put("serializer.class", "kafka.serializer.StringEncoder");
props.put("request.required.acks", "1");
ProducerConfig config = new ProducerConfig(props);
Producer<String, String> producer = new Producer<String, String>(config);
KeyedMessage<String, String> km = new KeyedMessage<String, String>("mm", "key-1", "content-1-中文");
producer.send(km);
producer.close();
以上是kafka生产者的代码,在kafka的服务器配置中有zookeeper.connect=xx.xx.xx.xx:2181的配置 这时候kafka会查找zookeeper
那么如果我们的hosts 中没有做hosts的配置 kafka经多次尝试连接不上就会报上面的错误。
解决办法:配置hosts文件 做zookeeper服务器的映射配置。
添加zookeeper的host配置
properties.put("advertised.host.name", "192.168.1.201");