• 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地址

    只有把命运掌握在自己手中,从今天起开始努力,即使暂时看不到希望,也要相信自己。因为比你牛几倍的人,依然在努力。
  • 相关阅读:
    github fork项目后,代码更新
    UIScrollView的用法,属性
    调整屏幕亮度,调整字体大小
    iOS UIFont 字体名字大全
    ios 6以后,UILabel全属性
    oc中的各种遍历(迭代)方法
    判断app是否是第一次启动
    ios 显示代码块(show the code snippet library)
    ios 添加动画的方法
    添加app第一次启动页面
  • 原文地址:https://www.cnblogs.com/freesky168/p/14358160.html
Copyright © 2020-2023  润新知