一、需求:
在实现商品添加功能时,由于在backend_item服务中,对三张表同时进行添加操作,即对三个对象同时进行添加。当其中一个操作失败或者是异常时,这时,虽然前端页面显示添加失败,但是后端数据库,已重复添加数据。
二、目的:
解决事务操作一致性
三、解决方案:
在上流服务和下流服务中添加分布式事务TX-LCN
4.2.10 添加分布式事务TX-LCN
4.2.10.1 搭建TX-LCN服务端
注意:在 Spring Boot2.x 版本中要求TX-LCN必须是5.0 以上
4.2.10.2 向数据库中导入SQL文件
4.2.10.3 修改application.properties文件、配置TX-managerID、配置Redis地址
(Tx的服务端在哪个环境上运行就配置那个环境的IP)
4.2.10.4 将TX服务端上传到Linux中
4.2.10.5 通过server.sh启动脚本启动服务端
4.2.10.6 访问管理页面
4.2.11 创建TX-LCN客户端
4.2.11.1 创建TX-LCN客户端项目
4.2.11.2 修改POM文件添加依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>bz_parent</artifactId>
<groupId>com.bjsxt</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>common_tx_manage_client</artifactId>
<dependencies>
<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>
</dependencies>
</project>
4.2.12 在服务中使用TX-LCN做分布式事务处理
4.2.12.1 在common_item服务中添加TX-LCN
<!--添加fe分布式事务-->
<dependency>
<groupId>com.bjsxt</groupId>
<artifactId>common_tx_manage_client</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
4.2.12.1.1 修改配置文件,添加TX-LCN服务端地址
tx-lcn:
client:
manager-address: 192.168.240.123:8070
4.2.12.1.2 修改启动类,开启TX-LCN
@EnableDistributedTransaction
4.2.12.1.3 在方法上添加分布式事务处理注解
@LcnTransaction
4.2.12.2 在backend_item服务中添加TX-LCN
<!--添加fe分布式事务-->
<dependency>
<groupId>com.bjsxt</groupId>
<artifactId>common_tx_manage_client</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
< ! - - mapper - - >
<dependency>
<groupId>com.bjsxt</groupId>
<artifactId>common_mapper</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
4.2.12.2.1 修改配置文件,添加TX-LCN服务端地址
tx-lcn:
client:
manager-address: 192.168.240.123:8070
4.2.12.2.2 修改启动类,开启TX-LCN
@EnableDistributedTransaction
4.2.12.2.3 在方法上添加分布式事务处理注解
@LcnTransaction
4.3.1测试
4.3.1.1 在服务中成功添加TX-LCN启动器详情
4.3.1.2 人为操作添加异常:在backend_item服务中修改itemDesc对象的id
4.3.1.3 当再次添加重复商品描述信息对象的id时,
结果显示添加失败,数据库中无添加新数据
4.3.1.4 下流common_item服务控制台操作数据库异常信息(添加重复对象的id)