原理:
创建一个事务管理组Tm项目。
LCN把事务注册到Tm中。然后结束后一起提交事务。
TCC先把事务提交。然后错误后进入cl方法中对数据进行修改。
只是简单的使用整理。要深入了解请看官方文档。
复制代码
ドキュメント:
源码地址:https://github.com/codingapi/tx-lcn
中文文档:http://www.txlcn.org/zh-cn/docs/preface.html
复制代码
ステップ:
1.创建tx-manage数据库和表
2.创建Tm项目。修改配置。
3.启动tm项目,并查看是否成功
4.使用tc并注册到Tm
5.使用@LcnTransaction模式
6.使用@TccTransaction模式
复制代码
1. TX-管理データベースとテーブルを作成します。
创建数据库和表名
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;
复制代码
2.プロジェクトのTmを作成します。
1.依存性を追加します。
<!--mysql连接-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>
<!--分布式事务管理tm-->
<dependency>
<groupId>com.codingapi.txlcn</groupId>
<artifactId>txlcn-tm</artifactId>
<version>${codingapi.txlcn.version}</version>
</dependency>
复制代码
2. [スタート]クラスのノートは@EnableTransactionManagerServerを追加します
3.プロファイルのTmを変更
server:
port: 7970
spring:
application:
name: tx-manager
datasource:
driver-class-name: com.mysql.jdbc.Driver
password: 123456
url: jdbc:mysql://127.0.0.1:3306/tx-manager?characterEncoding=UTF-8
username: root
redis:
database: 28
host:
password:
port:
tx-lcn:
manager:
admin-key: 123456
复制代码
4.Tmプロジェクト全体
3.スタートプロジェクトとビュー
1.输入ます。http:// localhostを:7970 / adminに/ index.htmlに#/ログイン
2.設定ファイルの管理キーの値。ログインします
4. TCとのTmに登録
1.(マイクロ関連サービスおよび関連MyBatisの言っていない)依存性を追加します。
<!--tc-->
<dependency>
<groupId>com.codingapi.txlcn</groupId>
<artifactId>txlcn-tc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<!--tc与tm通讯-->
<dependency>
<groupId>com.codingapi.txlcn</groupId>
<artifactId>txlcn-txmsg-netty</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
复制代码
2. [スタート]クラスのノートは@EnableDistributedTransactionを追加します
3. Tmの書き込みプロジェクトは、設定ファイルに対応しています。
tx-lcn:
client:
manager-address: 127.0.0.1:8070
复制代码
4.プロジェクトを開始します。Tmは行くかどうかを確認するためにサインアップしてください。
5.を繰り返して、別のサービスを開始するには、1-3を繰り返します。
5.モード@LcnTransaction
コンシューマとプロバイダ方法1.は@LcnTransactionコメントに追加されます。
流程: A: 插入数据a -> B: 插入数据b -> A: 是否抛出异常
抛出异常:事务不提交。无数据
不抛出异常:事务提交。有两条数据
复制代码
2.次にテスト。exはパラメータを取りません。成功したプロジェクトを実行します。そして、二つのデータが挿入されました
3.元のパラメータを持参してください。プロジェクトがスローされました。そして、データが送信するかどうか(ロールバック)を参照してください。これは、データが変更されていないことがわかりました。説明LCNモードが正常に分散トランザクションを使用しています。
6. @LcnTransactionモード
1.プロセス、同じロジック。@TccTransactionコメントにBプロジェクト@LcnTransaction
2.ブレークポイントは、データ項目Bに挿入することができます。そして、データベースを表示します。データが挿入されているかどうか。
3.プログラムを実行します。CFとCl方法を入力するかどうかを確認してください。