irpas技术客

kafka重复消费(总结)_终成一个大象_kafka重复消费

大大的周 7048

kafka重复消费(总结) 根本原因解决方法关键参数配置

根本原因

已经消费的数据,但是offset没有成功提交

具体情况:

消费者宕机、重启,导致消息已经消费但是未提交offset。消费者处理比较耗时,一次poll的数据,在max.poll.interval.ms达到最大值后仍未完成,未提交offest,触发rebalance。消费者使用自动提交offset,但当还没有到auto.commit.interval.ms的时间,没来的及提交。有新的消费者加入或者移除,发生了rebalance。超过session.timeout.ms的时间未发送心跳包,集群认为consumer宕机,触发rebalance,一般为网络问题。 解决方法

如下几种:

根据每条消息的平均处理时长,减少每次poll的个数。提高max.poll.interval.ms的值。给每个消息添加唯一索引,缓存消费过的消息id。consumer异步处理消息。 关键参数配置 max.poll.records

consumer每次poll的条数。 默认500条

max.poll.interval.ms

两次调用poll取数据的最大延迟时间,超过这个时间消费组会发生rebalance。 默认5分钟

heartbeat.interval.ms

consumer发送心跳包的间隔。 默认3秒

session.timeout.ms

consumer发送心跳包的超时时间。 默认10秒

enbale.auto.commit

是否自动提交offset。 默认为true

auto.commit.interval.ms

当enbale.auto.commit参数设置为 true 时才生效,表示开启自动提交消费位移功能时自动提交消费位移的时间间隔。 默认5秒

参考链接: kafka重复消费 重复消费解决办法 重要参数配置


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #kafka重复消费 #2 #3