news 2026/4/18 7:45:57

RocketMQ的事务消息是如何实现的?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RocketMQ的事务消息是如何实现的?

RocketMQ 通过 TransactionListener 接口实现事务消息机制,其工作流程如下:

  1. 发送半消息
    首先向 Broker 发送一条半消息(状态标记为"prepared"),该消息会被存储在事务日志中但暂不可消费。

  2. 执行本地事务
    半消息发送成功后,应用程序执行本地事务逻辑并确定最终状态。

  3. 提交/回滚

    • 本地事务成功:通知 Broker 提交消息(状态改为"committed"),消息转为可消费状态
    • 本地事务失败:通知 Broker 回滚消息(状态改为"rollback"),消息会被立即删除

异常处理机制

未收到确认指令时
若 Broker 未及时收到 COMMIT/ROLLBACK:

  1. 主动发起事务状态检查
  2. 应用程序通过回调返回处理结果
  3. 若超时未响应则标记为"UNKNOW"状态
  4. 最终过期后自动回滚

半消息发送失败
由于业务操作在半消息之后执行:

  • 失败时业务尚未执行,不存在一致性问题
  • 可通过重试机制解决(自主重试或依赖上游重试)

设计优势

相比"先提交事务再发消息"的传统方案,事务消息解决了:

  1. 最终一致性
    即使 COMMIT 消息发送失败,MQ 仍能通过半消息状态反查确保最终一致
  2. 防丢失
    本地事务提交与消息投递形成原子操作,避免"事务成功但消息丢失"的情况
  3. 状态可追踪
    通过 prepared/committed/rollback 状态机明确消息生命周期
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/8 17:11:41

王小云院士真地破解了 MD5 吗

​​​​​1、MD5 简介 MD5(Message-Digest Algorithm 5)是一种被广泛使用的消息摘要算法,也称为哈希算法、散列算法或杂凑算法,可以产生出一个定长的 128 位(16 字节)的散列值(Hash Value&…

作者头像 李华
网站建设 2026/4/13 5:06:19

Kotaemon支持CI/CD流水线吗?自动化部署实践

Kotaemon支持CI/CD流水线吗?自动化部署实践 在企业级AI系统日益复杂的今天,一个智能对话代理能否快速迭代、稳定上线,往往不再取决于模型能力本身,而是由背后的工程化水平决定。尤其是在构建基于检索增强生成(RAG&…

作者头像 李华
网站建设 2026/4/18 7:04:01

Ascend开发包Acllite安装

文章目录 获取源码包 第三方依赖安装 样例运行 参考 获取源码包 可以使用以下两种方式下载,请选择其中一种进行源码准备。 命令行方式下载(下载时间较长,但步骤简单)。 # 开发环境,非root用户命令行中执行以下命令下载源码仓。 cd ${HOME} git clone https://gi…

作者头像 李华
网站建设 2026/4/12 15:21:19

代理式人工智能:让大模型从“被动回答”走向“主动执行”

一、从生成式 AI 到代理式 AI:智能的进化方向 过去几年,生成式 AI 带来了惊人的内容生产能力——它能写代码、能回答问题、能生成图片,但它依然是“被动的”。 无论是 ChatGPT、Claude 还是 Gemini,当你输入一个指令,…

作者头像 李华
网站建设 2026/4/15 10:54:30

AI智能体中文文献

1. 《多智能体系统协同控制研究综述》作者:张某某,李某某 期刊:自动化学报 年份:2019 摘要:系统梳理了多智能体协同控制的理论框架,包括一致性控制、编队控制、任务分配等核心问题,并分析了强化…

作者头像 李华