开发环境问题排查-kafka重复消费一组数据

在向Kafka大批量发送消息后,程序不断重复消费一组数据

笔者的kafka采用的是手动提交。

因为某些消费者没有在规定的5分钟内消费500条数据,kafka发生了重平衡,导致不断消费同一组数据。(默认情况就是要5分钟消费500条数据)。

检查日志和搜索后发现,增大max.poll.interval.ms和减少max.poll.records是个方法,我采用的是减少max.poll.records。

max.poll.interval.ms就是多长时间消费完一批数据,可以让时间长一点。
max.poll.records是每次拉取的数据量,可以减少它。


有些猜想,不过目前暂时未验证

kafka消费者批量拉取的消息,每次拉取500条,如果配置的提交缓存策略是,缓存一段时间再提交,会导致消费者即使处理完了200条,也不会马上告诉kafka代理broker,还是会继续缓存等这批数据处理完。

默认提交commit的缓存策略如下
在这里插入图片描述

然后kafka代理broker发现5分钟还没回复,会把该消费者剔除,把这500个数据让其他消费者消费,然后其他消费者也没有在规定时间消费完,就会不断循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值