在进行centos kafka集群与windows交互的过程中,发现centos上的kafka的consumer 或者 producer无法连接到windows的broker,报错如下:
[2018-12-17 10:41:50,324] ERROR Error when sending message to topic test with key: null, value: 5 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for test-0: 1523 ms has passed since batch creation plus linger time
原因是因为配置文件server.properties中缺少一个配置:
advertised.listeners=PLAINTEXT://ip地址:9092
kafka会在zookeeper中使用这个参数进行注册,如果不设置,zk就无法向外提供broker的信息,自然就连接不上。
如果不写具体ip,填入0.0.0.0,可能会报错:
[2018-12-17 11:58:04,031] FATAL (kafka.Kafka$)
java.lang.IllegalArgumentException: requirement failed: advertised.listeners cannot use the nonroutable meta-address 0.0.0.0. Use a routable IP address.
at scala.Predef$.require(Predef.scala:224)
at kafka.server.KafkaConfig.validateValues(KafkaConfig.scala:1202)
at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:1170)
at kafka.server.KafkaConfig$.fromProps(KafkaConfig.scala:881)
at kafka.server.KafkaConfig$.fromProps(KafkaConfig.scala:878)
at kafka.server.KafkaServerStartable$.fromProps(KafkaServerStartable.scala:28)
at kafka.Kafka$.main(Kafka.scala:82)
at kafka.Kafka.main(Kafka.scala)
这可能和kafka、jdk等的版本有关,目前没有验证。