https://blog.csdn.net/jingYang07/article/details/100122897?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
基于redis的一种补偿型处理方案
一、处理TM框架
1、创建springboot项目
2、maven加入
-
<dependency>
-
<groupId>com.codingapi.txlcn</groupId>
-
<artifactId>txlcn-tm</artifactId>
-
<version>5.0.2.RELEASE</version>
-
</dependency>
3、在启动类加入注解
3。修改配置文件
-
server:
-
port: 7970
-
spring:
-
application:
-
name: tx-manager
-
datasource:
-
driver-class-name: com.mysql.jdbc.Driver
-
url: jdbc:mysql://localhost:3306/tx-manager?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
-
username:
-
password:
-
jpa:
-
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
-
hibernate.ddl-auto: update
-
redis:
-
host: localhost
-
port: 6379
-
password:
-
mybatis:
-
configuration:
-
map-underscore-to-camel-case: true
-
use-generated-keys: true
4、在MySQL数据库,新建一个, 名称为: tx-manager库
创建数据表
-
CREATE TABLE `t_tx_exception` (
-
`id` bigint(20) NOT NULL AUTO_INCREMENT,
-
`group_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
-
`unit_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
-
`mod_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
-
`transaction_state` tinyint(4) NULL DEFAULT NULL,
-
`registrar` tinyint(4) NULL DEFAULT NULL,
-
`remark` varchar(4096) NULL DEFAULT NULL,
-
`ex_state` tinyint(4) NULL DEFAULT NULL COMMENT '0 未解决 1已解决',
-
`create_time` datetime(0) NULL DEFAULT NULL,
-
PRIMARY KEY (`id`) USING BTREE
-
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
5、启动TM项目
二、调用项目
1、加入pom.xml
-
<!--分布式锁-->
-
<dependency>
-
<groupId>com.codingapi.txlcn</groupId>
-
<artifactId>txlcn-tc</artifactId>
-
<version>5.0.2.RELEASE</version>
-
</dependency>
-
<dependency>
-
<groupId>com.codingapi.txlcn</groupId>
-
<artifactId>txlcn-txmsg-netty</artifactId>
-
<version>5.0.2.RELEASE</version>
-
</dependency>
2、启动类 加入@EnableDistributedTransaction。
3、调用方法加上注解@LcnTransaction
三、被调用项目
1、pom.xml加入
-
<!--分布式锁-->
-
<dependency>
-
<groupId>com.codingapi.txlcn</groupId>
-
<artifactId>txlcn-tc</artifactId>
-
<version>5.0.2.RELEASE</version>
-
<scope>compile</scope>
-
</dependency>
-
<dependency>
-
<groupId>com.codingapi.txlcn</groupId>
-
<artifactId>txlcn-txmsg-netty</artifactId>
-
<version>5.0.2.RELEASE</version>
-
</dependency>
2、启动类 加入@EnableDistributedTransaction。
3、被调用方法加上注解@TxcTransaction(propagation = DTXPropagation.REQUIRED)
5、启动两个项目 搞定。