1.发现问题:服务中向kafka的一个topic发送消息,报了这个错误

org.apache.kafka.common.errors.TimeoutException:Topic xxx not present in metadata after 60000ms.

2.排查思路:手动连接kafka,打开两个窗口一个向xxx这个topic发送消息,另一个看能否正常消费消息。

窗口1:执行发送消息命令

bin/kafka-console-producer.sh --broker-list 192.168.65.60:9092,192.168.65.60:9093,192.168.65.60:9094 --topic xxx

窗口2:消费消息

bin/kafka-console-consumer.sh --bootstrap-server 192.168.65.60:9092,192.168.65.60:9093,192.168.65.60:9094 --from-beginning --topic xxx

我再窗口1发送消息时,窗口1报了错误

Error while fetching metadata with correlation id 0 : {test=UNKNOWN_TOPIC_OR_PARTITION}

3.问题转变:现在问题变为解决当前当前不能向topic发消息:

3.1:排查问题 在kafka安装目录的 config/server.properties配置文件中修改配置

kafka部署的机器ip和提供服务的端口号

#kafka部署的机器ip和提供服务的端口号

listeners=PLAINTEXT://192.168.65.60:9093

杀死之前已经启动的kafka

ps -ef | grep kafka

kill -9 进程id

重新启动kafka

bin/kafka-server-start.sh -daemon config/server.properties

在重新发送消息,发现消息已经可以正常收到。回到服务中,发现服务中调用报错依然存在检查配置:项目中使用的springboot+kafka.application.yml中配置如下

spring:

kafka:

bootstrap-servers: kafka.server.com

这里因为kafka部署着集群,本来是用nginx监听这个域名,将请求转发到三台机器。但是实际上这里不能使用这个域名,应该直接配置三台机器的ip:port。修改配置如下

spring:

kafka:

bootstrap-servers: ip1:port1,ip2:port2,ip3:port3

修改之后,重启服务,发现问题解决。

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: