kafka常见问题之重复消费问题

一.问题描述

kafka出现重复消费的问题,一条传入kafka中的消息可能被消费好几次。而且服务器出现以下日志:
在这里插入图片描述

二.问题原因分析以及解决方案

原因1:

消费端的能力过于低下。消息处理完之后提交下一个消费的offset,但是在session-time-out前,消息还没有处理完,出现了超时问题。于是被kafka视为消费失败了,导致一直重复消费。

解决方法1:

(1)关闭spring-kafka的自动提交。

spring.kafka.consumer.enable-auto-commit=false

(2)延长session-time-out的时间和poll的数据的数量。

#一次调用poll()操作时返回的最大记录数,默认值为500
spring.kafka.consumer.max-poll-records=500
#轮询消费者时使用的超时(以毫秒为单位,默认值是10s)
spring.kafka.listener.poll-timeout=10000;
原因2:

如果是使用的spring-kakfa的话,可能是由于kafka、springboot、spring-kakfa的版本不兼容。
apache的版本文档为:
https://cwiki.apache.org/confluence/display/KAFKA/Compatibility+Matrix
spring-kafka的文档为:
https://spring.io/projects/spring-kafka

重点信息如下:
在这里插入图片描述
在这里插入图片描述

  • kafka2.2.1-2.3.0支持的kafka.client版本为0.11.0.x,所以要是用的spring-kakfa版本为1.3.x以上的版本,否则可能会出现问题,例如上面的重复消费的问题。
  • spring boot 1.5的自动配置的kafka版本为1.1.x,但是应该用1.3.x,所以需要我们进行手动配置依赖版本。
  • spring kafka 在1.3之后才支持一个 topic 可以由多个 group-id订阅,版本过低的化就会出现group-id无法加入,从而无法提交偏移量,造成重复消费。

总结:使用对应版本的spring-kafka,最好使用1.3.x以上版本。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值