1. 程式人生 > 實用技巧 >TX-LCN分散式事務框架使用

TX-LCN分散式事務框架使用

官方文件相關:

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