# rocket-mq-example **Repository Path**: ling108/rocket-mq-example ## Basic Information - **Project Name**: rocket-mq-example - **Description**: 基于rocketmq解决分布式事务 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-05-23 - **Last Updated**: 2021-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # rocket-mq-example #### 介绍 基于rocketmq解决分布式事务 #### 软件架构 软件架构说明 SpringCloud+Feign+Mysql+RocketMq SpringBoot 版本2.3.1 RocketMq版本 4.7.1 启动前先打包:common-->api-->business-order common-->api-->business-goods #### 安装教程 1. 本地需要安装RocketMQ4.7.1版本 2. Jdk1.8 3. maven3.x+ #### 使用说明 解决思路: 可靠性消息+最大努力尝试+死信队列 1. 首先启动RocketMq 2. 在启动本地项目 3. 测试用例: 创建订单 /order/v1/save 首先会发生Half消息 business-goods会先接受到Half消息不可见 此时会存在三情况 1.business-order本地事务开始 如果此时扣减库存出现了异常,此时整个事务都会被回滚 消息不会被发送出去,business-goods也会不会消费到扣减库存消息 business-order也不会生成订单 1.1 如果扣减库存成功返回commitSuccess,此时本地事务方法 才开始执行 如果会存在三种情况 A.本地事务正常提交 B.本地事务异常 那么此时order-goods不会接受到扣减库存消息 C.此时business-order服务重启,那么就会就如回查方法,判断此消息是否处理过 D.本地事务执行成功,发送消息 business-goods消费失败,此时发起重试 这个重试可以设置,重试到一定次数我们可以吧数据写进入异常订单,后续可以在 管理后台提供手动处理异常订单 4.新增顺序消息以及消息发送的三种方式 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request