# dtx-demo **Repository Path**: qozier/dtx-demo ## Basic Information - **Project Name**: dtx-demo - **Description**: 分布式事务简单示例 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2022-03-14 - **Last Updated**: 2024-10-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: 分布式事务 ## README 该项目是对 [分布式事务专题](https://www.bilibili.com/video/BV1FJ411A7mV) 中4个示例的整理。 没有整理有关分布式事务的相关基本概念。主要通过这几个示例,了解分布式事务的大致处理流程。 ## 项目说明 - [2PC 示例](RES/2PC%20示例.md) dtx-seata-demo - [TCC 示例](RES/TCC%20示例.md) dtx-tcc-demo - [可靠消息一致性示例](RES/可靠消息一致性示例.md) dtx-txmsg-demo - [最大努力通知示例](RES/最大努力通知.md) dtx-notifymsg-demo > discovery-server 是注册中心服务 ## 基本环境 环境基本都是按视频的 - db:MySQL 5.7 - RocketMQ version: 4.5.0 - SpringCloud version: 2.1.3.RELEASE - SpringBoot version: Greenwich.RELEASE - SpringCloudAlibaba version: 2.1.0.RELEASE (使用其中的Seata) ## 数据库初始化 主要有3个库:`bank1_pay`、`bank1`和`bank2`. 初始化脚本: - [bank1](RES/sql/bank1.sql) - [bank2](RES/sql/bank2.sql) - [bank1_pay](RES/sql/ban1_pay.sql) ## 服务间调用 使用Feign实现服务间的调用。通过服务名到注册中心查找服务。 依赖Eureka注册中心 `discovery-server` ## 消息中间件 消息使用 RocketMQ。 > 系统环境是 windows 10 下载地址:https://rocketmq.apache.org/dowloading/releases/ 下载4.5.0版本 1) 启动nameserver: 需要在RocketMQ 的bin目录下执行,否则 mqnamesrv.cmd 和 mqbroker.cmd 会找不到命令(可以根据当前目录使用)。 ```$sh set rocketmq_home=F:\dtx\rocketmq-all-4.5.0-bin-release set java_home=D:\Program Files\Java\jdk1.8\jdk1.8.0_05 mqnamesrv.cmd ``` 2) 启动broker: 需要 设置参数 autoCreateTopicEnable=true ,启动自动创建 topic。 ```$xslt set rocketmq_home=F:\dtx\rocketmq-all-4.5.0-bin-release set java_home=D:\Program Files\Java\jdk1.8\jdk1.8.0_05 mqbroker.cmd -n localhost:9876 autoCreateTopicEnable=true ``` > 因为 RocketMQ 4.5.0 不兼容 jdk 11,所以我这里手动设置了当前的jdk路径。 > > 如果java_home 路径中有空格,也会导致RocketMQ报错,无法启动。可以用文本工具打开.cmd 文件, > 在使用java环境变量的地方添加双引号,让整个路径作为一个整体。