# spring-cloud-rocketmq-transaction
**Repository Path**: fishcc/spring-cloud-rocketmq-transaction
## Basic Information
- **Project Name**: spring-cloud-rocketmq-transaction
- **Description**: SpringCloud+RocketMQ 实现分布式事务(transaction)
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2020-02-07
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#
RocketMQ实现分布式事务
有关RocketMQ实现分布式事务前面写了一篇博客
1、[RocketMQ实现分布式事务原理](https://www.cnblogs.com/qdhxhz/p/11191399.html)
下面就这个项目做个整体简单介绍。
## 一、项目概述
#### 1、技术架构
项目总体技术选型
```
SpringCloud(Finchley.RELEASE) + SpringBoot2.0.4 + Maven3.5.4 + RocketMQ4.3 +MySQL + lombok(插件)
```
有关SpringCloud主要用到以下四个组建
```
Eureka Server +config-server(配置中心)+ Eureka Client + Feign(服务间调用)
```
配置中心是用MySQL存储数据。
#### 2、项目整体结构
```makefile
config-service # 配置中心
eureka # 注册中心
service-order #订单微服务
service-produce #商品微服务
```
各服务的启动顺序就安装上面的顺序启动。
`大致流程`
启动后,配置中心、订单微服务、商品微服务都会将信息注册到注册中心。
如果访问:`localhost:7001`(注册中心地址),以上服务都出现说明启动成功。

#### 3、分布式服务流程
用户在订单微服务下单后,会去回调商品微服务去减库存。这个过程需要事务的一致性。

#### 4、测试流程
页面输入:
```
http://localhost:9001/api/v1/order/save?userId=1&productId=1&total=4
```
订单微服务执行情况(订单服务事务执行成功)

商品微服务执行情况(商品服务事务执行成功)

当然你也可以通过修改参数来模拟分布式事务出现的各种情况。