1 / 11
文档名称:

分布式事务之解决方案.docx

格式:docx   大小:118KB   页数:11页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

分布式事务之解决方案.docx

上传人:科技星球 2022/3/10 文件大小:118 KB

下载得到文件列表

分布式事务之解决方案.docx

文档介绍

文档介绍:分布式事务之解决方案
 
   
 
 
 
 
 
 
 
     
 
 
 
 
 
:本文为博主原创文章,遵循 CC BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链值系统完成充值将充值结果发给
MQ。 3、账户系统监听MQ,接收充值结果通知,如果接收不到消息,MQ会重复发送通知。接收到充值结果通知账户系统增加充值金额。 4、账户系统也可以主动查询充值系统的充值结果查询接口,增加金额。

本示例程序组成部分如下 : 数据库:MySQL- 包括bank1和bank1_pay两个数据库。 JDK:64位 rocketmq 服务端:RocketMQ- rocketmq 客户端:RocketMQ-Spring-Boot--RELEASE 微服务框架:spring-boot-、spring-cloud- 微服务及数据库的关系 : dtx/dtx-notifymsg-demo/dtx-notifymsg-demo-bank1 银行1,操作张三账户, 连接数据库bank1 dtx/dtx-notifymsg-demo/dtx-notifymsg-demo-pay 银行2,操作充值记录,连接数据库bank1_pay
交互流程如下 : 1、用户请求充值系统进行充值。 2、充值系统完成充值将充值结果发给MQ。 3、账户系统监听MQ,接收充值结果通知,如果接收不到消息,MQ会重复发送通知。接收到充值结果通知账户系统增加充值金额。 4、账户系统也可以主动查询充值系统的充值结果查询接口,增加金额。

创建bank1库,并导入以下表结构和数据(包含张三账户)
CREATE DATABASE `bank1` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
DROP TABLE IF EXISTS `account_info`; CREATE TABLE `account_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`account_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '户 主姓名',
`account_no` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '银行卡号',
`account_password` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT
'帐户密码',
`account_balance` double NULL DEFAULT NULL COMMENT '帐户余额', PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
INSERT INTO `account_info` VALUES (2, '张三的账户', '1', '', 10000);
DROP TABLE IF EXISTS `de_duplication`; CREATE TABLE `de_duplication` (
`tx_no` varchar(64) COLLATE utf8_bin NOT NULL, `create_time` datetime(0) NULL DEFAULT NULL, PRIMARY KEY (`tx_no`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
创建bank1_pay库,并导入以下表结构:
CREATE DATABASE `bank1_pay` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; CREATE TABLE `account_pay` (
`id` varchar(64) COLLATE utf8_bin NOT NULL,