开发技术-解决kafka消息重复消费

1.需求:近来有小伙伴反应他负责的那块服务出现了kafka消息重复消费的问题。

2.解决:
    出现重复消费的原因:消费者(consumer)依据偏移量(offset)读取消息, 消费完消息后,会向kafka的节点(broker) 发送一个消息被消费的反馈,也就是提交该消息的偏移量,然后broker更新对应消息的consumer_offset中,接着等待下个消费者依据偏移量读取消息。    
    消费者提交offset的默认时间是5分钟,超过这个时间,若有别的消费者请求消息,就会形成重复消费。
    
    方法1:修改微服务关于消费者参数-每次消费者拉取(poll)消息的条数(默认500)
    spring.kafka.consumer.max-poll-records
    方法2:延长微服务关于消费者参数-提交offset的时间(默认5分钟)
    spring.kafka.properties.max.poll.interval.ms
    方法3:修改业务逻辑,提高消费者消费能力

#默认500
spring.kafka.consumer.max-poll-records=100

#默认300000,单位毫秒
spring.kafka.properties.max.poll.interval.ms=600000
spring:
  kafka:
    consumer:
      max-poll-records: 100
  	properties:
      max:
        poll:
          interval:
            ms: 600000

猜你喜欢

转载自blog.csdn.net/JustDI0209/article/details/109328326