org.apache.kafka.common.errors.TimeoutException:Topic xxx not present in metadata after 60000ms.
1.发现问题:服务中向kafka的一个topic发送消息,报了这个错误org.apache.kafka.common.errors.TimeoutException:Topic xxx not present in metadata after 60000ms.2.排查思路:手动连接kafka,打开两个窗口一个向xxx这个topic发送消息,另一个看能否正常消费消息。窗口1:执行发送消息命令bin
·
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
修改之后,重启服务,发现问题解决。
更多推荐
已为社区贡献2条内容
所有评论(0)