栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

kafka0.9重复消费和不消费问题记录

kafka0.9重复消费和不消费问题记录

最近生产环境出现重复消费的问题,记录一下目前的解决方案;

1,https://github.com/apache/kafka/pull/1295

这个issue意思是当有记录可用时,消费者在轮询中执行延迟的任务失败

而这个延迟任务就比较关键了,是用来发送心跳的,这种情况相当于不发送心跳了,导致服务器认为消费端挂掉了,因此就不能消费消息

2,props.put("max.partition.fetch.bytes", "2048");

这个参数 kakka0.9是1M

经过我测试发现,这个默认参数太大,当分区很多的时候(我这边是37个),kafka消费端一次将

拉取37M的数据,如果消费程序不能在一个会话超时时间内,处理完这37M数据,那么就会出现异常。

所以我把这个参数改的小了一点

3,使用数据库锁确保即使重复消费,也不影响业务(这是兜底方案)

正常的话kafka不应该重复消费

4,经调试发现KafkaConsumer有一个closed属性,当KafkaConsumer挂掉的时候,这个属性是true

于是我在后台启一个线程,定时去获取这个属性是不是true,如果是,则程序手动再起一个消费者

以上都是自己摸索的解决方法,可能会有更好的方案。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/775523.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号