Rocketmq 写入流程 读取流程 事务消息

RocketMQ-消息存储(一):写入过程 1、当前broker停止工作或为slave则拒绝写入;消息主题长度超过256个字符、消息属性长度超过65536个字符则拒绝该消息写入 2、如果消息的延迟级别大于0 ,将消息的原主题名称与原消息队列 ID 存入消息属 性中,用延迟消息主题 SCHEDULE TOPIC 、消息队列 ID 更新原先消息的主题与队列,这是并发消息消费重试关键的一步 3、获取当前可以写入的commitLog文件: Comm... 阅读详情

RocketMQ 是一个开源的分布式消息中间件,它提供了高性能、高可靠性的消息发布和订阅服务。RocketMQ 支持多种消息模式,包括普通消息、顺序消息、事务消息等。下面将介绍 RocketMQ 的写入流程和读取流程,以及事务消息的处理机制。

写入流程

  1. 消息生产:客户端(Producer)构建消息对象,并设置消息的属性,如主题(Topic)、标签(Tag)、键(Key)等。

  2. 序列化:消息对象会被序列化为字节数组,以便在网络中传输和存储。

  3. 发送消息:客户端将序列化后的消息发送给 Broker(RocketMQ 的消息服务器)。在发送消息时,客户端会先选择一个队列(Queue)进行写入。

  4. 消息存储:Broker 接收到消息后,会将其写入到本地磁盘的存储文件中。RocketMQ 使用顺序写的方式,将消息追加到文件末尾,以保证写入的高性能。

  5. 消息刷盘:为了保证消息的持久性,RocketMQ 支持将消息同步(Sync)或异步(Async)地写入磁盘。同步刷盘会等待消息写入磁盘后再返回成功,而异步刷盘会立即返回成功,消息会在后台被写入磁盘。

  6. 消息索引:为了提高消息的查询效率,RocketMQ 会为消息建立索引,如主题索引、时间索引等。

  7. 返回确认:当消息成功写入存储并可能已经被索引后,Broker 会向客户端发送写入成功的确认消息。

读取流程

  1. 订阅消息:客户端(Consumer)通过订阅主题、标签等方式,指定需要消费的消息类型。

  2. 拉取消息:Consumer 会主动向 Broker 发起拉取(Pull)请求,获取指定队列中的消息。

  3. 消息过滤:Broker 根据 Consumer 的订阅条件,对队列中的消息进行过滤,只返回符合条件的消息。

  4. 消息消费:Consumer 接收到消息后,进行业务处理。RocketMQ 支持并行消费,即多个 Consumer 可以同时消费同一个队列中的消息。

  5. 消费确认:Consumer 处理完消息后,需要向 Broker 发送消费确认(ACK)消息,告知 Broker 该消息已被成功消费。

  6. 消息偏移量:Consumer 会记录已经消费的消息的偏移量(Offset),以便下次从正确的位置继续拉取消息。

事务消息

RocketMQ 支持事务消息,即确保消息的生产和消费在事务的上下文中保持一致性。事务消息的处理流程如下:

  1. 开启事务:在消息生产前,Producer 开启一个本地事务。

  2. 发送半消息:Producer 将消息发送给 Broker,但此时消息并不被直接消费,而是被标记为“半消息”(Half-Message)。

  3. 本地事务提交:Producer 在本地事务执行完毕后,根据事务的执行结果(成功或失败),向 Broker 发送事务提交或回滚的请求。

  4. 消息状态更新:Broker 接收到事务提交请求后,会将对应的“半消息”更新为可消费状态(Commit)或删除状态(Rollback)。

  5. 消费事务消息:如果消息状态为可消费,Consumer 可以正常消费该消息;如果消息状态为删除,则 Consumer 不会消费该消息。

通过事务消息的处理机制,RocketMQ 可以确保消息的生产和消费在分布式系统中的一致性。需要注意的是,事务消息可能会带来一定的性能开销,因此在使用时需要权衡性能和一致性的需求。

RocketMQ系列6——事务消息 RocketMQ在4.3.0版中支持分布式事务消息,这里RocketMQ的事务消息是采用2PC(两段式协议) +补偿机制(消息回查)的分布式事务功能。提供消息发送与业务落库的一致性。 阅读详情

相关推荐

rocketmq介绍和消息队列事务处理机制

rocketmq消息事务处理机制:

感冒石头的博客 3687

RocketMQ 消息存储流程

基于 RocketMQ 4.2.0 版本进行的。本文讲述 RocketMQ 存储一条消息的流程。

meser88的博客 251

RocketMQ消息存储过程

持久化在计算机系统中具有极其重要的地位,尤其是在诸如消息队列、数据库等需要保证数据完整性和可靠性的场景中。:持久化能够保证数据在硬件故障、系统崩溃或断电等情况发生后仍能保持完整,避免数据丢失。在RocketMQ中,消息一旦被持久化到磁盘,即使Broker服务出现异常重启,也能从磁盘恢复未被消费的消息。:对于涉及多个操作的事务处理,持久化可以作为事务提交的关键步骤,只有当数据成功写入持久化存储后,事务才能被认为已成功完成。这对于分布式事务、消息队列的事务消息等功能至关重要。

tousdi的博客 1161

rocketmq消息写入流程

rocketmq

小泽 508

RocketMQ事务消息实现原理

文章目录概述RocketMQ事务消息实现原理RocketMQ事务消息流程概要RocketMQ事务消息设计事务消息优缺点优势缺陷注意 概述 在之前文章seata(一) 分布式事务解决方案汇总中介绍了十来种分布式事务的解决方案或理论,其中有一个是事务消息。rocketmq是支持事务消息的,本文将介绍rocketmq事务消息的实现原理,以及具体实例。 RocketMQ事务消息实现原理 RocketMQ是基于2PC协议基础之上演变而来的,同时增加一个补偿(回查)逻辑来处理二阶段超时或者失败的消息。2PC协议可以参

刘本龙的专栏 2183

直升机空气动力学基础--005翼型的升阻比和气动力矩

焦点与翼型有关,总升力矩可以视为附加升力与零升力迎角升力的合成,对于对称翼型,零升力力矩为0,附加升力就是总升力,其焦点就是其压力中心。对于对称翼型,零升力力矩为0,对于非对称翼型,零升力力矩存在,与不对称度成正比。对于不对称翼型,升力对焦点的力矩保持不变。

ygf666的博客 4129

RocketMQ 接受消息写入消息 (03)

rocketmq 接受消息、消息入内存、落盘、构建consumeQueue文件和Index索引文件源码分析

qq_37867087的博客 1014

CloudCompare里那个CSF地面滤波插件,到底怎么用?手把手教你分离点云里的地面

本文详细介绍了如何在CloudCompare中使用CSF地面滤波插件分离点云中的地面数据。通过解析布料模拟滤波算法的核心参数,如布料刚度和网格分辨率,并提供不同地形(城市、丘陵、山地)的适配策略,帮助用户高效处理复杂点云数据。文章还包含实战案例和优化技巧,确保滤波结果的精度和可靠性。

weixin_42548708的博客 220

RocketMQ怎么对文件进行读写的?

RocketMQ 通过 CommitLog 和 ConsumeQueue 实现了对消息的存储和索引管理,并通过 MappedFile 类结合内存映射技术,提升了文件的读写性能。顺序写入、内存映射、刷盘机制等技术使得 RocketMQ 在处理海量消息时既能保证高效性,也能确保数据的持久性和可靠性。

Kenard的博客 1037

生信人填坑记 orthofinder的安装和基础使用

其中常用的有两个结果,第一个是Orthogroups文件夹下的Orthogroups.GeneCount.tsv,这个文件里保存着每个家族在每个物种里的成员数量。(写到这儿饭点到了,吃饭要紧…在国内使用conda的同学我相信很多人都会遇到-|- -|- -|- -|- -|- -|- -|- -|- 一直转圈。软件的是由很简单,将你要跑的物种的蛋白质文件放在work/data目录下,文件名都用物种缩写,后缀统一就行。当然,很多软件都会自带一个这样的文件,conda装不了的时候可以去软件官网溜达溜达。

qq_43337286的博客 5381

[PCIE5.0] 4.2.3.2 Encoding of Presets

• 发射器预设:发射器预设值用4位二进制编码,表示不同的预设设置(P0 到 P10),这些设置定义了信号的传输特性。• 接收器预设提示:接收器预设提示是通过3位二进制编码告诉接收器建议的增益值,用于调整接收器的灵敏度(适用于8.0 GT/s数据速率)。

系统固件工程师 574

RocketMQ事务消息如何保证数据的最终一致性

在面过的几家大厂中,几乎每轮的面试官(「没写错,几乎是每轮面试官」)都问了同样一个问题:你们的系统是分布式的系统吗? 答:是。 面试官:那么你们分布式的系统是如何解决分布式事务这个问题的呢?也就是如何保证数据的一致性。 答:我们的系统中通过 RocketMQ 的事务消息来保证数据的最终一致性。 面试官:那你说说它是如何来保证数据的最终一致性的? 答:分两部分来回答,第一部分先回答事务消息的实现流程,第二部分解释为什么它能保证数据的最终一致性。 事务消息的实现流程 事务消息 首先服务

qq_42093488的博客 4793

实现画布拖拽算子排布,通过flink实现算子编排计算,如何实现?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1069

RocketMQ事务消息

在文末我们提到了使用RocketMQ提供的一种新思路:异步队列方案,去解决我们的分布式事务问题,接下来我们直入主题看看它是如何解决的。

m0_71836706的博客 956

Ansys Lumerical双层扭曲液晶偏振光栅仿真:宽角度衍射效率优化

Ansys Lumerical双层扭曲液晶偏振光栅仿真研究 摘要 本文采用Ansys Lumerical软件平台,对双层扭曲液晶偏振光栅的宽角度衍射特性进行系统仿真研究。针对6μm周期的液晶光栅结构,以1050nm、1064nm和1550nm三个近红外波段为研究对象,在±40°入射角范围内优化平均衍射效率。研究基于液晶材料的双折射特性(Δn=0.135),通过构建两层扭曲方向相反的液晶层结构,扫描0-90°单层扭曲角度和不同厚度参数,利用RCWA求解器进行严格耦合波分析~~~~~~~

huanghm88的专栏 164

qt项目中添加 jsoncpp 库

qt使用jsoncpp库

deroy 1349

RocketMQ的事务半消息和本地事务表机制

摘要:本文探讨了分布式系统中"本地事务+异步消息"的一致性问题,重点介绍了RocketMQ的事务消息机制。通过半消息(HalfMessage)状态、事务回查等创新设计,RocketMQ实现了两阶段提交的事务模型,在保证最终一致性的同时避免了引入额外协调器。文章详细对比了普通消息、顺序消息和事务消息的重试机制,并分析了本地事务表方案的优缺点。针对不同业务场景,提出了半消息与本地事务表结合使用的建议,为解决分布式事务问题提供了实用方案。

weixin_50055999的博客 1212

GameFramework框架详解之 框架总览

一.前言 目前市场上有很多优秀个开源框架,比如ET,GameFramework,DBFramework,StrangeIOC,Loxodon-Framework,KSFramework,xluaFramework等等。其中要说规范的话,不得不说GameFramework还是不错的,当然很多新手看到后会觉的有点复杂,写一个小小的功能,不得不套用一堆东西,继承一堆接口,感觉不知所措,不能随心所欲的去撸代码。其实这个框架就是为了约束新手的行为的,让我们面向接口编程,遵循“开闭”的设计原则来写代码,方便后期的扩

TxNet 2万+

RocketMQ的事务消息机制

当生产者发送 half 消息后,它会等待 MQ 给自己返回 success 响应,如果没有接收到,那么生产者 也会直接结束,返回异常,不再执行后续逻辑。不执行后续逻辑,这样生产者 也就不会提交 commit 消息给 MQ,MQ 长时间没接收到 commit 消息,那么它就会主动回调生产者 的一个接口,生产者 通过接口,查询本地数据后,发现这条消息对应的业务并没有正常执行,那么就告诉 MQ,这个 half 消息不能 commit,需要 rollback,MQ 知道后,就将 half 消息进行删除。

King Gigi的博客 1391

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

RocketMQ 事务消息实现流程

在面过的几家大厂中,几乎每轮的面试官(「没写错,几乎是每轮面试官」)都问了同样一个问题:你们的系统是分布式的系统吗? 答:是。 面试官:那么你们分布式的系统是如何解决分布式事务这个问题的呢?也就是如何保证数据的一致性。 答:我们的系统中通过 RocketMQ 的事务消息来保证数据的最终一致性。 面试官:那你说说它是如何来保证数据的最终一致性的? 答:分两部分来回答,第一部分先回答事务消息的实现流程,第二部分解释为什么它能保证数据的最终一致性。 事务消息的实现流程 事务消息 首先服务 A 发送一个半事务消

上山打卤面的博客 1100

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

RocketMQ事务消息原理

RocketMQ事务消息概要 通过冯嘉发布的《RocketMQ 4.3正式发布,支持分布式事务》一文可以看到RocketMQ采用了2PC的方案来提交事务消息,同时增加一个补偿逻辑来处理二阶段超时或者失败的消息。 这张图说明了事务消息的大致方案,分为两个逻辑:正常事务消息的发送及提交、事务消息的补偿流程 事务消息发送及提交: 发送消息(half消息) 服务端响应消息写入结果 根据发送结果执行本地事务(如果写入失败,此时half消息对业务不可见,本地逻辑不执行) 根据本地事务状态执行Commi

BUG指挥课堂 1635

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

RocketMQ 事务消息详解

1. 事务消息简介 RocketMQ的事务消息,是指发送消息事件和其他事件需要同时成功或同时失败。比如银行转账, A银行的某账户要转一万元到B银行的某账户。A银行发送“B银行账户增加一万元”这个消息,要和“从A银 行账户扣除一万元”这个操作同时成功或者同时失败。 RocketMQ采用两阶段提交的方式实现事务消息,TransactionMQProducer处理上面情况的流程 是,先发一个“准备从B银行账户增加一万元”的消息,发送成功后做从A银行账户扣除一万元的操作,根 据操作结果是否成功,确定之前的“准备从B

rzpy_qifengxiaoyue的博客 1465

消息队列之事务消息,RocketMQ 和 Kafka是如何做的?

作者 |是Yes呀责编 | 郑丽媛来源 | yes的练级攻略(ID:yes_java)每个时代,都不会亏待会学习的人。大家好,我是 yes。今天我们来谈一谈消息队列的事务消息,一说起事...

优快云资讯 4260
上一篇: Nacos 高性能读写 主动监测,上报 写队列
下一篇: sentinel 限流算法,方式 漏桶,令牌桶 限流,降级,熔断
vmaps
博客等级 码龄17年 424粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值