今天同事那边出现了一个关于kafka无法消费的小问题。
框架是springboot,相同的程序,相同的配置,第一次启动可以消费到数据,第二次启动就无法消费。
经排查原因是:
request.timeout.ms配置的时间太长,且第一次退出程序时,是强制退出,并不是优雅的关闭资源后退出。
这样导致kafka服务端针对该groupId的消费者仍然在拉取消息(TCP的特性)。后启动的程序由于groupId相同,无法分配到partition。故无法消费

解决方案:
1、程序优雅的关闭,不要强制退出。这样spring容器就会优雅的关闭客户端,进而让服务端能感知到

2、将request.timeout.ms时间设置比较短,或直接使用默认的配置,不再另行配置

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐