RocketMQ事务消息机制原理

RocketMQ工作流程

在RocketMQ当中,当消息的生产者将消息生产完成之后,并不会直接将生产好的消息直接投递给消费者,而是先将消息投递个中间的服务,通过这个服务来协调RocketMQ中生产者与消费者之间的消费速度。

那么生产者是如何投递自己的消息呢?这里向大家介绍一下RocketMQ当中的一个重要组件,topic。Topic,故名思意,主题嘛,消息生产者在生产投递消息的过程中,可以通过设定不同的topic将自身所生产的消息,投递到对应的topic当中。举一个通俗易懂的例子,我们可以把topic想象成是一个货物仓库,而topic是一个货架,对应的种类的物品要放到对应的货架上。

消费者则根据自身的需求,通过不同的topic来获取自己想要消费的消息。

RocketMQ事务消息的实现

RocketMQ事务消息的实现,其实也是非常的简单,我们只需要弄清一个原理即可,即分阶段实现。在RocketMQ当中,想要实现分阶段实现这一功能,首先要实现一个机制,就是TransactionListener--事务监听机制。事务监听机制有两个重要的方法,即executeLocalTransaction(执行本地事务),checkLocalTransaction(回查本地事务)。

RocketMQ事务消息的流转过程其实也是十分简单。首先,消息事务生产端会生生一个half消息即半消息,和正常一样,生产者也是要将这个消息投递到Broker当中,但这个Broker当中用来接收这个半消息的topic和普通的topic并不一样,我们将这种用来接收生产者生产的half消息投递的topic称为half topic。特别注意,half topic对消费者来说是不可见的,即消费者无法直接从half topic当中获取信息进行消费。

那么如何将half topic当中的消息转移到正常的topic当中,让消费者能够消费呢?

首先,当Broker当中的半topic接收到这个半消息后,Broker便会返回一个ack给生产者,生产者接收到这个ack后,便会开始执行本地事务。执行本地事务后,会产生两种结果,一种执行成功一种执行失败。

事务执行成功

当本地事务执行成功之后,生产者便会将本地事务执行成功的状态提交个Broker,当Broker接收到这个信息时,便会将半topic当中的半消息给拿出来,放到目标topic当中,供消费者能够进行正常消费。

事务执行失败

若当本地事务执行的过程中产生异常或者没有执行成功,生产者则会将事务进行回滚并会给Broker返回一个Rollback状态,当Broker接收到Rollback这个状态时,便会将半topic中的消息进行逻辑删除,并且RocketMQ还会通过异步的方式单开一个线程,用来接收这种被Broker逻辑删除的消息,并将这些消息进行清除。

事务执行成功但无状态

若本地事务执行成功,但由于网络波动,本地事务的执行状态未及时反馈给生产者或生产者迟迟未接收到本地事物的状态,即处于无状态或中间态的情况下,Broker便会启动一个定时回查任务。Broker会调用事务监听器当中的checkTransaction接口,来查看当前事务的状态,根据回查的状态结果,来进行相应的操作。这个事务回查机制,有次数限制,默认回查十五次,超过十五次后,便不会再来回查本地事务的状态了。

总结

以上便是RocketMQ中事务消息的整个流程,笔者也将流程图置于下方,希望能够给各位小伙伴带来帮助。笔者小,中,大厂均有面试经验,目前正在从事全栈开发工作,主要分享java全栈开发知识与相关的面试真题,希望能够给大家带来帮助,同大家共同进步。

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

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

相关文章

昇思25天学习打卡营第19天|DCGAN生成漫画头像

DCGAN生成漫画头像总结 实验概述 本实验旨在利用深度卷积生成对抗网络(DCGAN)生成动漫头像,通过设置网络、优化器以及损失函数,使用MindSpore进行实现。 实验目的 学习和掌握DCGAN的基本原理和应用。熟悉使用MindSpore进行图像…

网络协议一 : 搭建tomacat,intellij IDEA Ultimate 的下载,安装,配置,启动, 访问

需要搭建的环境 1.客户端--服务器开发环境 客户端:浏览器(HTMLCSSJS) 服务器:JAVA 1.安装JDK,配置JAVA_HOME 和 PATH 2.安装Tomcat 3.安装IDE--intellij IDEA Ultimate 是旗舰版的意思。 2.TOMCAT 的下载和解…

文件操作相关的精讲

目录: 思维导图 一. 文件定义 二. 文件的打开和关闭 三. 文件的顺序读写操作 四. 文件的随机读写操作 五. 文本文件和二进制文件 六. 文件读取结束的判断 七.文件缓冲区 思维导图: 一. 文件定义 1.文件定义 C语言中,文件是指一组相…

Java中的二叉搜索树(如果想知道Java中有关二叉搜索树的知识点,那么只看这一篇就足够了!)

前言:Java 提供了丰富的数据结构来处理和管理数据,其中 TreeSet 和 TreeMap 是基于红黑树实现的集合和映射接口。它们有序地存储数据,提供高效的搜索、插入和删除操作。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主…

web基础,http协议,apache概念及nginx

一、web相关概念 Web,全称World Wide Web,通常简称为WWW、Web或万维网,是一个基于超文本和HTTP(超文本传输协议)的、全球性的、动态交互的、跨平台的分布式图形信息系统。它起源于1989年,由英国科学家蒂姆…

文本编辑三剑客(grep)

目录 正则表达式 元字符 grep 案例 我在编写脚本的时候发现,三个文本编辑的命令(grep、sed、awk,被称为文本编辑三剑客,我习惯叫它三巨头)用的还挺多的,说实话我一开始学的时候也有些懵,主要…

(史上最全的)Spring6框架学习教程

一、什么是Spring 1.javaWeb框架发展史 1、ServletJSPJavaBean(跳转页面、业务逻辑判断、数据库查询) 2、MVC三层架构(M Model pojo(User)V-view(USP)C-(controller-servlet)) (web-跳转页面service-业务逻辑判断 new UserService0;dao-数据库查询 new UserDao(); ) 3、使用…

二、八、十、十六进制介绍及相互转换

目录 1、引言: 2、进制介绍及区分 2.1 介绍 2.2 区分 2.3 各进制的数字组成 3、2进制与10进制 3.1 十进制的介绍 3.2 二进制的介绍 4、2进制与10进制的转换 4.1 二进制转十进制 4.2 十进制转二进制 5、8进制和16进制 5.1 八进制的介绍 5.2 十六进制的介…

告别抠图烦恼,1秒搞定100张图片背景更换!

想象一下,你手头有几十张甚至上百张证件照需要从白底换成蓝底,而你只能用Photoshop一张张抠图,调整,然后保存。这个过程不仅耗时,还容易出错,特别是当你急需处理大量图片时,简直让人抓狂。 千鹿…

“云+端”体系覆盖590余所学校,张家口如何建设“教育一朵云”?

当将装有小苏打的气球套在装有白醋的塑料瓶瓶口时,一场令人惊叹的化学反应开始上演——瓶内瞬间白雾腾起弥漫,气泡翻滚不息,气球逐渐吹了起来......这是在张家口教育云平台上的由学生及家长上传的关于“小苏打吹气球”的科学实验视频,而学生们与家长参与的便是张家口市中小学云…

昇思MindSpore学习入门-静态图高级编程技巧二

如何优化执行性能 使用jit_class 使用场景:使用jit_class装饰器修饰自定义类,提高执行性能。jit_class应用于静态图模式,在动态图模式下,jit_class会被忽略,不影响动态图模式的执行逻辑。 jit_class的介绍 用户在网…

快递代拿系统/快递代领系统

摘 要 在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括快递代拿系统的网络应用,在外国快递代拿已经是很普遍的方式,不过国内的快递代拿可能还处于起步阶段。快递代拿系统具有代取物品功能。快递代拿系…

嵌入式学习Day12---C语言提升

目录 一、指针数组 1.1.什么是指针数组 2.2. 格式 2.3.存储 2.4.与字符型二维数组相比 2.5.什么时候使用指针数组 2.6.练习 二、数组指针 2.1.什么是数组指针 2.2.格式 2.3.一维数组 2.3.特点 2.4.什么时候使用 三、指针和数组的关系 3.1.一维数组和指针 …

ps制作镂空文字

1、创建文字。 2,栅格化文字 2、载入选取 3.选择》修改》收缩 4、然后再点击删除键,镂空文字效果就做好了。 同样适用于简单的图片logo

AI智能名片小程序在预测性产品管理与营销中的深度应用探索

摘要:本文深入探讨了AI智能名片小程序在预测性产品管理与营销中的广泛应用及其带来的深远影响。通过详细分析该技术在数据收集、市场分析、用户画像构建、个性化推荐、客户关系管理以及风险预测等方面的具体实践,本文揭示了AI智能名片小程序如何助力企业…

刚起步的小型海外仓有必要上WMS系统吗?答案来了

首先,这里的自动化主要是指将库存管理、SKU管理,一件代发、财务管理等海外仓的日常作业流程通过WMS系统实现的自动化。 而不是指海外仓自动化机器人、智能导轨等硬件设备。 文章会针对刚起步的一些小型海外仓是否有必要使用WMS系统进行讨论&#xff0c…

捷报来袭!上半年HCIE通过120人!证书量总计1767

智汇云校捷报 —上半年华为认证证书量1767本— 2024年上半年,云校HCIA、HCIP、HCIE证书量总计1767本! HCIA:1240本 HCIP:407本 HCIE:120本 祝贺以下学员通过HCIE认证! 欢迎有考证需求的学员 咨询云校…

Python文件打包exe文件

作者的一点话 你是否还在为py文件无法像其他可视化项目展示出来,制造图形界面的移动使用,那接下来我会与你一同使用它,并进行study,如有困惑,可随时联系。 然后,需要使用pysimplgui,如果…

[网络编程】网络编程的基础使用

系列文章目录 1、 初识网络 网络编程套接字 系列文章目录前言一、TCP和UDP协议的引入二、UDP网络编程1.Java中的UDP2.UDP回显代码案例3.UDP网络编程的注意事项 三、TCP网络编程1.TCP回显代码案例2.TCP多线程使用 总结 前言 在学习完基础的网络知识后,完成跨主机通…

元器件基础学习笔记——二极管基础

一、二极管基础 二极管是用半导体材料(硅、硒、锗等)制成的一种电子器件,具有单向导电性,是现代电子技术的基石。它在电子电路中扮演着至关重要的角色,通过与电阻、电容、电感等元器件的合理连接,能够实现整流、检波、限幅、稳压等…