zoukankan      html  css  js  c++  java
  • Kafka 消息丢失和消息重复消费

    1. 消息丢失

    1. producer 的acks参数值设置为‘0’或者‘1’,不等待服务器确认或者只让leader确认

      解决方法:将acks的值设置为all或者-1,让leader和followers全部进行确认

    2. producer 没有设置失败重试

      解决方法:根据实际场景将retries参数值设置为正整数

    3. consumer poll到消息后还未来的及完全消费,便已经提交

      解决方法:这种情况是在自动提交的情况下发生的,如果enable.auto.commit值为true,可以根据实际场景将auto.commit.interval.ms的值调大。如果enable.auto.commit值为false,就调用commitSync方法手动提交offset。

    2. 消息重复消费

    consumer 在 partition中的位置是通过提自己 offset+1 实现的,offset的提交方式有自动提交和手动提交两种。自动提交offset情况下,当消息消费完成,在提交之前(甚至是前一瞬间)consumer 宕机,那么 consumer 重启后的poll的offset依然是宕机前消费的那个offset ,因此造成重复消费。同样的,手动提交模式下,在提交代码调用之前, consumer 宕机也会造成消息重复消费

    解决方法:consumer 关闭自动提交,使用手动提交。producer发送消息时对消息封装一个唯一标识ID。consumer消费消息前根据唯一标识查询Redis,存在就不消费,不存在就消费,在提交前向Redis set一条记录。
    kafka API地址

    只有把命运掌握在自己手中,从今天起开始努力,即使暂时看不到希望,也要相信自己。因为比你牛几倍的人,依然在努力。
  • 相关阅读:
    POJ2635-The Embarrassed Cryptographer-大整数素因子
    poj2115-C Looooops -线性同余方程
    POJ1942-Paths On a Grid-组合数学
    poj1850-CODE-组合
    POJ1019-Number Sequence-数数。。
    CF-Contest339-614
    POJ3252-RoundNumbers-排列组合
    睡前小dp-poj3254-状压dp入门
    AC自动机-HDU3065-简单题
    python学习笔记 day32 实现网盘上传下载功能
  • 原文地址:https://www.cnblogs.com/freesky168/p/14358160.html
Copyright © 2011-2022 走看看