kafka-client推送消息TimeoutException排查方法

当遇到Kafka客户端无法推送消息到集群的问题时,经过一系列排查,包括检查网络、版本兼容性、Kafka集群状态和客户端配置,发现并非常规问题。最终发现是由于Jenkins打包时拉取到的kafka-client版本与项目配置的不同,导致实际运行的版本与服务器集群不兼容。解决方案是调整项目中kafka-client依赖的位置,避免Maven依赖冲突,重新打包后问题得到解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

kafka-client无法推送消息到kafka集群解决方法

一天,问题处理微信群又亮起了令人恐惧的红点,好吧,又要修bug了。测试说用户接收到不到推送消息了,赶紧查查什么问题。出了问题当然第一时间看服务器日志:

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

一、按照前人的经验,按如下步骤进行排查:

  1. 网络是否有问题?简单,使用telnet测试:

    telnet kafka集群服务器ip地址 9092
    

    结果可以连上,网络没问题,排除这个原因。如果连不上,可能是端口没对外开放。

  2. 版本问题?kafka是无法向上兼容的(这个改了,从0.10.2.0版本开始双向兼容了)公司kafka服务器集群是2.11-.0.9.0.1,项目pom文件引入的kafka-client是0.9.0.1,按理来说肯定没问题。排除。

  3. 难道是kafka集群炸了?测试一下知道,cd到kafka bin目录下:

    #用命令创建一个消息发布者
    ./kafka-console-producer.sh --broker-list 192.168.7.100:9092 --topic topic名
    
    #用命令创建一个订阅者
    ./kafka-console-consumer.sh --zookeeper localhost:12181 --topic topic名 --from-beginning
    

    创建之后在消息发布者窗口发送消息,订阅者可以接收到消息。好吧kafka集群也没问题。

  4. 难道是kafka-client配置不对?认真对了一遍,也没什么问题,网上有人试过kafka偶尔能接收到信息,偶尔接受不到,是因为partition分区数配置错了。我这是一直接收不到信息,分区数也没弄错。排除。

排查了好久,各种百度,也找不到是什么原因。但是,我是那么容易放弃的人吗(卑微打工人没有放弃的资质/(ㄒoㄒ)/~~),成功激发了我的斗志,我要放大招了!!!
找到了公司架构师,大佬,求求你教教我这题怎么做(QqQ)。大佬说这很有可能是版本的问题,你是去服务器上把jar包下下来,看看里面的kafka-client是哪个版本的 。我是懵逼的,还能有这种问题?本地工程里maven导入的kafka-client就是0.9.0.1版本的,用jenkins打包部署到sit服务器上的还能有不同的吗?把jar下下来一看,好家伙,kafka-client居然是2.11!!!问题找到了!!!
二、解决问题
第一次遇到这么奇葩的问题,按照项目的pom文件配置,在公司的仓库里拉取的是0.9版本的,但是sit环境上通过jenkins打包拉取到的确实2.11版本的。太坑了。产生这个原因应该是这项目的其他子项目也到了kafka-client-2.11,我配置的kafka依赖没起效。
这就是maven的依赖原则问题了,根据路径最短原则,修改了kafka-client依赖的的声明位置。重新打包,问题解决!!!困扰我好几天的问题终于解决了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值