kafka消息推送测试(华为云KafkaTemplate向topic发送消息失败线上问题解决)

问题描述:代码上线后第二天,用户告警信息没有发送到平台,告警数据丢失。

初步排查问题原因:kafka生产者向topic发送消息时阻塞,生产消息失败,kafka没有任何报错信息,公司kafka服务和java程序分别部署在两台不同华为云机器

尝试解决方法:

1、回滚最新上线的代码 --问题没有解决

2、查看错误日志,修改kafka配置,重启服务,验证利用kafka 自己的生产端可以成功推送消息到topic

3、重新验证 通过java api推送消息仍然失败

4、考虑可能是华为云网络问题,将kafka和java代码部署到同一台机器,仍然发送失败

5、最后确实想不到哪里出现了问题,检查自己的代码,发现用于分区的代码:VehiclePartitioner.java 有这样一个获取随机数的方法,网上搜索这个方法发现了向kafka发送失败是由于SecureRandom.getInstanceStrong()引发的线程阻塞导致,最后改用java自身的Random方法生成随机数问题解决,具体SecureRandom.getInstanceStrong()导致线程阻塞原因,可以参考原博主写的这边博客:https://blog.csdn.net/weixin_45244678/article/details/106137948

kafka消息推送测试(华为云KafkaTemplate向topic发送消息失败线上问题解决)(1)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页