官方文檔相關:
GitHub地址:
https://github.com/codingapi/tx-lcn
官方文檔:
https://www.codingapi.com/docs/txlcn-preface/
一、運行TX-LCN分布式事務框架
1.下載合適版本(這里我用的是5.0.2)
下載地址:
https://github.com/codingapi/tx-lcn/releases/tag/5.0.2.RELEASE
2.下載並解壓
3.導入Idea
4.配置數據庫連接和新建庫
數據庫腳本(項目中存在,以項目中存在的SQL腳本為主)
/* Navicat Premium Data Transfer Source Server : local Source Server Type : MySQL Source Server Version : 100309 Source Host : localhost:3306 Source Schema : tx-manager Target Server Type : MySQL Target Server Version : 100309 File Encoding : 65001 Date: 29/12/2018 18:35:59 */ CREATE DATABASE IF NOT EXISTS `tx-manager` DEFAULT CHARSET utf8 COLLATE utf8_general_ci; USE `tx-manager`; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for t_tx_exception -- ---------------------------- DROP TABLE IF EXISTS `t_tx_exception`; 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, `ex_state` tinyint(4) NULL DEFAULT NULL COMMENT '0 待處理 1已處理', `remark` varchar(10240) NULL DEFAULT NULL COMMENT '備注', `create_time` datetime(0) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 967 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1;
application.properties配置內容如下(一般都有,通常改下庫名和用戶名、密碼即可):
spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/tx-manager?characterEncoding=UTF-8&useSSL=false spring.datasource.username=root spring.datasource.password=1234
5.運行txlcn-tm項目
主要啟動主類(TMApplication.java)
運行成功后,訪問地址為:
http://IP:7970/admin
默認密碼是codingapi,支持修改(通常改配置文件即可),主要修改application.properties,添加如下內容,即可實現自定義:
tx-lcn.manager.admin-key=tx-lcn-test
二、微服務中使用分布式事務
1.添加Maven依賴
<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.application.yml或bootstrap.yml配置如下內容
tx-lcn: client: manager-address: 127.0.0.1:8070 logger: enabled: true driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://127.0.0.1:3306/tx-manager?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false username: root password: 1234
3.啟動類增加注解
@EnableDistributedTransaction
4.對應的Controller中的方法或者Service方法添加對應的注解
@LcnTransaction
@Transactional