神金!SpringBoot项目Kafka为啥连接不上啊!

神金!SpringBoot项目Kafka为啥连接不上啊!

1. 问题描述

某个服务连接kafka总是报如下错误:

rust 复制代码
:06:04.880 [kafka-producer-network-thread | producer-1] ERROR o.s.k.s.LoggingProducerListener - [error,261] - Exception thrown when sending a message with key='null' and payload='{"msg":"success","code":"200","data":[{"ropewayId":"2","ssId":"1","latitude":"301189677","longitude"...' to topic pos_msg:
org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for pos_msg-0:120000 ms has passed since batch creation

翻译翻译大概的意思是发送消息到kafka的时候超时了,消息发送不过去。

2. 问题排查

2.1 检查kafka是否运行正常

这里我用的kafka-ui这个ui工具,非常方便查看kafka的一些情况如下(下图为博主自己的图,):

可以看到,kafka服务是在线无疑的,那么肯定是kafka客户端的问题。

2.1.1 手动连接kafka看看能否成功

(1) 首先放开端口

怀疑是9092端口未放开导致的,放开9092端口之后也无效!

(2) docker容器当中手动向kafka推送消息

由于采用docker部署的kafka,这里现在容器中看看能否向kafka成功推送消息:

bash 复制代码
docker exec -it kafka /bin/bash #进入容器
kafka-console-producer.sh --broker-list localhost:9092 --topic test # 向kafka写入消息

出现如下返回表示写入消息成功,说明至少kafka在docker容器内部是可以成功写入消息的:

(3) docker容器外部向kafka推送消息

为了方便测试,我又新建了一个kafka的docker镜像kafka-test,在这个镜像中我们来测试是否能够成功发送消息:

bash 复制代码
docker exec -it kafka-test /bin/bash #进入容器
kafka-console-producer.sh --broker-list xxx.xxx.xxx.xxx:9193 --topic test # 向kafka写入消息

如下图我们发现,kafka即使是通过公网ip也能够正常的将消息推送过去,那么问题可能出在Spring Boot的配置上

(4)向出问题的topic推送消息

虽然上面向着测试topic推送消息无论是容器内部还是容器外部都没有出问题,但是当我直接向出问题的topic推送消息的时候确出现了同样的报错:

2.2 检查Spring Boot项目本身

如果通过以上针对于kafka的测试,发现kafka服务本身是正常的,并且也能够正常的接受到消息,那么出现上面报错的原因只可能是------Spring Boot项目本身有问题!

但是博主这里无需排查这部分问题,后面遇到了再来填坑

3. 修复问题

3.1 修改为新的topic

这里不太明白为什么老的topic没办法正常推送数据,于是新建立了一个topic发现可以正常发送数据了。

3.2 kafka消费者测试

但是问题依旧没有被解决!!! 虽然修改为新的topic之后,kafka的消息能够被正常的发送过去了,但是消费者这边却不消费,真的很烦,这里继续查消费者的问题:

javascript 复制代码
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

发现根本没反应终端直接卡住,这说明消费没有成功:

最后参考这篇文章:blog.csdn.net/hxc2101/art... 將zookeeper中的/brokers/topics/__consumer_offsets主題刪除之後,消息消費回復了正常

THE END

搞了一早上才弄好原因可能是kafka重裝之後zookeeper中的消費offset不正确所导致的bug,哎真难受。

相关推荐
喵个咪10 小时前
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:深度解析 Wire 依赖注入集成实践
后端·go
回家路上绕了弯10 小时前
代码的三大核心素养:如何同时兼顾可维护性、可扩展性、可测试性
分布式·后端
快手技术10 小时前
入围AA总榜Top 10,Non-Reasoning Model榜单第一!KAT-Coder-Pro V1 新版本踏浪归来!
前端·后端·前端框架
小坏讲微服务10 小时前
Spring Boot4.0整合RabbitMQ死信队列详解
java·spring boot·后端·rabbitmq·java-rabbitmq
苏三说技术10 小时前
工作中最常用的6种缓存
后端
tc&10 小时前
Kamailio SIP脚本编程核心概念总结
后端·kamailio
考虑考虑10 小时前
maven项目使用指定JDK版本打包
java·后端·maven
咕白m62511 小时前
使用 C# 设置 Word 段落对齐样式
后端·c#
Kiri霧11 小时前
Go切片详解
开发语言·后端·golang
0和1的舞者11 小时前
SpringBoot配置文件
java·spring boot·后端·web·配置·spirng