《消息队列高手课》课程笔记(四)

news2024/11/15 22:33:02

如何确保消息不会丢失?

检测消息丢失的方法

  • 我们可以利用消息队列的有序性来验证是否有消息丢失。
    • 在 Producer 端,我们给每个发出的消息附加一个连续递增的序号,然后在 Consumer 端来检查这个序号的连续性。
    • 如果没有消息丢失,Consumer 收到消息的序号必然是连续递增的,或者说收到的消息,其中的序号必然是上一条消息的序号 +1。
    • 如果检测到序号不连续,那就是丢消息了。
    • 还可以通过缺失的序号来确定丢失的是哪条消息,方便进一步排查原因。
  • 如果 IT 基础设施比较完善,一般都有分布式链路追踪系统,使用类似的追踪系统可以很方便地追踪每一条消息。

确保消息可靠传递

  • 一条消息从生产到消费完成这个过程,可以划分三个阶段:
    在这里插入图片描述

    • 生产阶段
      • 在这个阶段,从消息在 Producer 创建出来,经过网络传输发送到 Broker 端。
      • 你在编写发送消息代码时,需要注意,正确处理返回值或者捕获异常,就可以保证这个阶段的消息不会丢失。
        • 同步发送时,只要注意捕获异常即可。
        • 异步发送时,则需要在回调方法里进行检查。
    • 存储阶段
      • 在这个阶段,消息在 Broker 端存储,如果是集群,消息会在这个阶段被复制到其他的副本上。
      • 如果对消息的可靠性要求非常高,可以通过配置 Broker 参数来避免因为宕机丢消息。
        • 对于单个节点的 Broker,需要配置 Broker 参数,在收到消息后,将消息写入磁盘后再给 Producer 返回确认响应。
        • 如果是 Broker 是由多个节点组成的集群,需要将 Broker 集群配置成:至少将消息发送到 2 个以上的节点,再给客户端回复发送确认响应。
    • 消费阶段
      • 在这个阶段,Consumer 从 Broker 上拉取消息,经过网络传输发送到 Consumer 上。
      • 不要在收到消息后就立即发送消费确认,而是应该在执行完所有消费业务逻辑之后,再发送消费确认。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/564283.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Goat: Fine-tuned LLaMA Outperforms GPT-4 on Arithmetic Tasks

Goat: Fine-tuned LLaMA Outperforms GPT-4 on Arithmetic Tasks IntroductionMethod语言模型数学问题学习能力COT 实验参考 Introduction 大语言模型现在已经展示了很好的效果在各种下游任务,如GPT4。但是GPT的数学能力还没有达到最优。 在这篇文章中&#xff0c…

三角化:Triangulation: Why Optimize?

三角化:Triangulation: Why Optimize? 1. 预备知识1.1 评估 3D 点准确性 2. 提出的方法2.1 广义加权中点法2.2 可选的中点法2.3 Cheirality(多视图几何中代表着3D点的正景深约束)2.4 逆深度加权中点-Inverse Depth Weighted(IDW) Midpoint 3. 实现代码 Reference: …

塞尔达工业革命卷到数字电路了!网友:怕不是要在Switch里造Switch

量子位 | 公众号 QbitAI 《塞尔达传说:王国之泪》发布一周多,懂物理的和不懂物理的都沉默了。 如果说,一个打怪靠冷兵器的救公主游戏,主角开上带悬挂的摩托车,还不算稀奇: △B站up主:天舐鱼XQ…

springboot项目部署到宝塔

网上查找资料要么是细节不够失败要么是根本没用也不需要这么复杂,在这里总结一下本人在宝塔部署前端和后端的方法。 1.在宝塔上添加站点 ↑部署项目当然需要一个站点 2.在该站点的根目录下放打包好的jar文件和前端文件 ↑此时可以访问站点链接,无法请求数…

和月薪5W的京东程序员聊过后,才知道自己一直在打杂...

前几天和一个朋友聊面试,他说上个月同时拿到了腾讯和京东的offer,最后选择了京东。 京东内部将员工一共分为了14个等级,P6是资深工程师,P7是技术专家。 其中P6和P7就是一个分水岭了,P6是最接近P7的不持股员工&#x…

ES Elasticsearch 五 、文档入门****

目录 文档document介绍 手动生成id 自动生成id _source //定制查询字段 全量替换 put 强制创建-只创建不覆盖 增加/_create 延迟删除 该状态防止磁盘写入消耗 局部更新 脚本 并发问题 文档document介绍 默认字段:_index 索引 _type 类型 _id 可…

分享个自用的提升效率的ahk脚本

在草稿中新建笔记 有时遇到灵感想要快速记录,只要按winw快捷键,即可在指定文件夹中新建md文档,后期也可以再做一个收集并上传文档的脚本。 #w::Gui DestroyGui, Add, Edit, vMyEditGui, Add, Button, default xm, OKGui, Show ReturnButtonO…

小米手机系列的演进:从小米1到小米13

1. 小米1(2011年):小米1是小米公司的首款旗舰手机,以超低的售价提供出色的硬件配置和流畅的用户体验。它打破了传统手机市场的价格壁垒,受到广大用户的欢迎。 2. 小米2(2012年):小米…

Dubbo源码篇06---SPI神秘的面纱---原理篇---上

Dubbo源码篇06---SPI神秘的面纱---原理篇---上 引言核心思想SPI模块架构设计源码追踪Dubbo的分层模型获取扩展加载器对象创建ExtensionLoaderExtensionLoader自适应扩展对象创建Extension Instance创建生命周期SPI机制获取扩展对象实现类型获取扩展类型使用不同的加载策略加载不…

傅利叶变换在图像处理的应用

傅利叶变换在图像处理的应用 1.傅利叶变换在图像处理的应用1.1 图像函数化1.2 幅度谱1.3 相位谱1.4 图像处理的底层原理 1.傅利叶变换在图像处理的应用 之前本人的相关博客:傅里叶变换与图像处理 笔记来源:傅里叶变换从零到一 03集 从爱因斯坦和梦露讲起…

智慧档案馆一体化环境管控平台格式内容

第一章建设背景 第二章建设依据 1、 设计遵循规范 2、 方案设计原则 3、 成熟性 4、 开放性 5、 标准化 6、 可扩展性 7、 安全性 8、 可靠性 9、 高效、系统易用、互操作性 10、 经济性 11、 可管理性 第三章建设内容 1、管理总平台建设 2、档案库房环境建设 …

QT课程 UI设计

目录 1.面板的划分 2.组件对象和继承关系 3.QWidget类 注:学习布局前先知道这点 4.Layout 布局 5.Spacers 间隔器 6.基础组件对象 6.1 QLabel便签组件 6.2 QAbstractButton 按钮类 6.3 QLineEdit 单行文本输入框 6.4 QSpinBox(数字选择器&…

java面试项目三:在线教育

1、项目简介 项目规模:15人 项目周期:2021.5-至今 开发环境:Intellij IDEA、Maven、JDK1.8、GIT 所用框架:Spring、SpringBoot、Mybatis-Plus、SpringCloud、Shiro、XXL-Job、 其他技术:RocketMQ、Redis、Mysql、Mongo…

梦x西游H5页面搭建教程Centos

梦x西游H5页面搭建教程Centos 大家好,我是艾西,今天给大家分享一款H5页面的游戏搭建教程。版本分为三种族、四种族、五种族,大家可以自己喜欢哪个版本自己尝试开服架设等,今天我们以三种族的为演示。 那么让我们直接进入正题开…

9. Linux下实现简单的socket通讯

本文简单介绍了UDP传输层协议,并在Linux下实现简单的socket通讯 一、UDP UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,它不保证数据包的可靠性和顺序。UDP在IP协议的基础上增加了简单的差错…

es 四 快速入门****

目录 查看集群状态 **颜色: 查看集群索引 **简单的索引操作 kibana 创建索引模式 Es 存储 文档 json数据 查看集群状态 get /_cat/health 带上表头 get /_cat/health?v **颜色: 绿色: 主分片副本分片可用 黄色: 主分片可用、副本分片不可用 红…

Java 与数据结构(6):快速排序

ChatGPT 中文指南(大全) 内容包含:如何开通chatgpt、chatgpt的同类站点、prompts 、AI绘图、ChatGPT 工具、相关报告论文、ChatGPT应用项目等 链接:ChatGPT 中文指南(大全) 指令指南,精选资源清单,更好的使用 chatGPT 让你的生产力…

C++线程池介绍和C++代码实现

1、介绍 1.1 线程池应用场景 在进行创建线程任务时,如果需要频繁的创建线程、销毁线程,这样会极大地降低效率,因为创建线程也是需要时间的,一个完整的线程处理运行时间包括:线程的创建时间、线程运作时间、线程的销毁…

【C++】-string的介绍以及使用(迭代器的介绍和使用)

💖作者:小树苗渴望变成参天大树 ❤️‍🩹作者宣言:认真写好每一篇博客 💨作者gitee:gitee 💞作者专栏:C语言,数据结构初阶,Linux,C 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点…

谈谈国产化CRM系统市场前景与发展趋势

随着数字化时代的到来,CRM系统已经成为企业管理中不可或缺的一部分。在过去,大多数企业都选择使用海外CRM系统,比如Salesforce、SAP等,但随着国内CRM系统的逐渐发展,越来越多的企业开始将目光转向了国产CRM系统。 一、…