当前位置: 首页 > news >正文

【进阶篇-消息队列】——RocketMQ如何实现事务的

目录

    • 一、RocketMQ如何实现事务的
      • 1.1、普通业务代码实现RocketMQ 的事务大致流程
      • 1.2、通过 RocketMQ 的源代码分析事务消息是如何实现的
        • 1.2.1、 RocketMQ 在 Producer 端事务消息的实现
        • 1.2.1、 RocketMQ 在 Broker端事务消息和事务反查的实现

本文来源:极客时间vip课程笔记

一、RocketMQ如何实现事务的

1.1、普通业务代码实现RocketMQ 的事务大致流程

  • 首先我们一起通过普通业务代码来看 RocketMQ 的事务大致流程。

    public class CreateOrderService {@Injectprivate OrderDao orderDao; // 注入订单表的DAO@Injectprivate ExecutorService executorService; //注入一个ExecutorServiceprivate TransactionMQProducer producer;// 初始化transactionListener 和 producer@Initpublic void init() throws MQClientException {TransactionListener transactionListener = createTransactionListener();producer = new TransactionMQProducer("myGroup");producer.setExecutorService(executorService);producer.setTransactionListener(transactionListener);producer.start();}// 创建订单服务的请求入口@PUT@RequestMapping(...)public boolean createOrder(@RequestBody CreateOrderRequest request) {// 根据创建订单请求创建一条消息Message msg = createMessage(request);// 发送事务消息SendResult sendResult = producer.sendMessageInTransaction(msg, request);// 返回:事务是否成功return sendResult.getSendStatus() == SendStatus.SEND_OK;}private TransactionListener createTransactionListener() {return new TransactionListener() {@Overridepublic LocalTransactionState executeLocalTransaction(Message msg, Object arg) {CreateOrderRequest request = (CreateOrderRequest ) arg;try {// 执行本地事务创建订单orderDao.createOrderInDB(request);// 如果没抛异常说明执行成功,提交事务消息return LocalTransactionState.COMMIT_MESSAGE;} catch (Throwable t) {// 失败则直接回滚事务消息return LocalTransactionState.ROLLBACK_MESSAGE;}}// 反查本地事务
http://www.dtcms.com/a/265960.html

相关文章:

  • HarmonyOS ArkTS卡片堆叠滑动组件实战与原理详解(含源码)
  • 如何挖掘客户的隐性需求
  • 474. 一和零
  • 【华为od刷题(C++)】HJ22 汽水瓶
  • ubuntu22 桌面版开启root登陆
  • ubuntu22.04安装anaconda
  • embbding you should know
  • 独立开发者软件出海:如何用Semrush高效洞察与增长
  • 【Note】《深入理解Linux内核》Chapter 10 :Linux 内核中的系统调用机制全解析
  • 贝叶斯深度学习:赋予AI不确定性感知的认知革命
  • 【Oracle学习笔记】8.函数(Function)
  • 湖北理元理律师事务所的债务管理方法论
  • 算法刷题打卡(1)—— 快速排序
  • 睿尔曼系列机器人——以创新驱动未来,重塑智能协作新生态(上)
  • 【python】OOP:Object-Oriented Programming
  • 数字人分身+矩阵系统聚合+碰一碰发视频: 源码搭建-支持OEM
  • AI开发平台:从技术壁垒到全民创新,AI 开发平台如何重构产业生态?
  • C++ 标准模板库算法之 transform 用法
  • STC8G 8051内核单片机开发 (中断)
  • 在 UniApp 项目中巧用开发工具与 AI 插件:全面提升开发到部署的效率
  • 【时间序列数据处理的噩梦与救赎:一次复杂数据可视化问题的深度复盘】
  • 运维服务部初级服务工程师面招聘笔试题和答案
  • PROFINET转MODBUS TCP网关在机械臂通信操作中的应用研究
  • 微信小程序——skyline版本问题
  • 2025年金融创新与计算机视觉国际会议(FICV 2025)
  • 【网络协议】WebSocket简介
  • Web 服务器架构选择深度解析
  • HTTP-Postman的安装及其使用
  • 电脑CPU使用率占用100%怎么办 解决步骤指南
  • 【数字后端】- 衡量design的congestion情况