码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Kafka如何防止消息丢失+如何防止消息重复消费


    目录

    如何防止消息丢失(消息的确认机制)

    如何防止消息的重复消费

    如何做到顺序消费


    如何防止消息丢失(消息的确认机制)

    其实就是消息的确认机制,我们从两个角度去思考:1.生产者这里(同步发送设置ack);2.消费者

    (39条消息) Java代码实现kafka的消息生产与消费_Fairy要carry的博客-CSDN博客

    生产者:当消息返回到生产者,返回ack,我们设置ack即可(-1,1,all)

    -1:到broker就返回ack

    1:到leader了就返回ack

    all:需要同步给副本,同步完返回ack(设置同步的分区数>=2)

    消费者:

    把自动提交改为手动提交(自动提交时poll了之后直接提交offset,可能消息并没有消费)

    (39条消息) kafka-offset手动提交和自动提交_Fairy要carry的博客-CSDN博客

    这里我想到了mq的消息丢失从三方面思考还有它的消息延迟+消息堆积处理

    (39条消息) RabbitMQ的高级特性(消息可靠性)_Fairy要carry的博客-CSDN博客

    如何防止消息的重复消费

    场景:如果生产者发送消息后因为消息的抖动问题导致没有收到ack导致进行retry操作导致恢复后broker收到多条消息(常见下单业务,转账业务)

    解决:实际上就是解决我们的幂等性的问题,我们可以利用mysql和token两种方式

    (39条消息) 幂等性的处理_Fairy要carry的博客-CSDN博客

    mysql:

    创建一个唯一索引,当重复插入就会报错

    分布式锁:

    使用分布式锁,以业务id作为锁资源,Redission.lock(order.id),第一条记录可以成功,第二条失败

    (39条消息) mysql分布式锁的实现_Fairy要carry的博客-CSDN博客

    (39条消息) Redis分布式锁的实现_Fairy要carry的博客-CSDN博客

    如何做到顺序消费

     生产者:首先得确保顺序消费,将ack设置为1/all,关闭retry防止重复消费,确保成功发送后再发下一条

     消费方:消息是发送到一个分区中的,只能有一个消费组中的消费者来消费消息

     


    解决消息积压问题

    MQ消息堆积的解决问题 

    (39条消息) MQ-消息堆积问题_Fairy要carry的博客-CSDN博客_mq消息堆积

     

  • 相关阅读:
    ES6快速入门
    程序员在工作之余如何保障收入?兼职才是硬道理!
    Python 存储数据到数据库
    安卓实现微信聊天气泡
    8月最新修正版风车IM即时聊天通讯源码+搭建教程
    直播软件开发技巧:7个实时视频传输和弹幕功能的关键步骤
    ES的近实时性是什么意思?原理是什么?
    html静态网页设计制作 HTML我的家乡沧州网页代码 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计
    SpringSecurity源码学习二:异常处理
    Java Static关键字 单例设计模式
  • 原文地址:https://blog.csdn.net/weixin_57128596/article/details/127406549
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号