原理:
1 | 复制代码 创建一个事务管理组Tm项目。 |
文档:
1 | 复制代码 源码地址:https://github.com/codingapi/tx-lcn |
步骤:
1 | 复制代码 1.创建tx-manage数据库和表 |
1.创建tx-manage数据库和表
1 | 复制代码创建数据库和表名 |
2.创建Tm项目
1.添加依赖
1 | 复制代码<!--mysql连接--> |
2.启动类添加@EnableTransactionManagerServer注解
3.修改Tm配置文件
1 | 复制代码server: |
4.Tm项目整体
3.启动项目并查看
1.输入http://localhost:7970/admin/index.html#/login
2.根据配置文件里面admin-key的值。登录进入
4.使用tc并注册到Tm
1.添加依赖(微服务相关的和Mybatis相关的就不说了)
1 | 复制代码<!--tc--> |
2.启动类添加@EnableDistributedTransaction注解
3.配置文件编写Tm项目地址。
1 | 复制代码#Tm项目地址。 默认是127.0.0.1:8070,如果再服务器上的话要改成对应的地址。 |
4.启动项目。 查看是否注册到Tm中去。
5.重复1-3步,启动另一个服务。
5.使用@LcnTransaction模式
1.在消费者和提供者方法上都添加上@LcnTransaction注解。
1 | 复制代码流程: A: 插入数据a -> B: 插入数据b -> A: 是否抛出异常 |
2.然后测试。不带上ex参数。项目跑成功。并插入了两条数据
3.带上ex参数。项目抛出异常。然后查看数据是否提交(回滚)。发现数据没有改变。说明分布式事务Lcn模式使用成功。
6.使用@LcnTransaction模式
1.流程、逻辑不变。把b项目中的@LcnTransaction换成@TccTransaction注解
2.可以在B项目插入数据后打断点。然后查看数据库。数据是否插入。
3.执行完程序。查看是否进入cf与cl方法。
本文转载自: 掘金