From bea46501341360bcc64635ddc99aa989e0eae50b Mon Sep 17 00:00:00 2001 From: zlt Date: Fri, 15 Mar 2019 10:30:51 +0800 Subject: [PATCH] update to v1.4.0 --- .gitignore | 1 + README.md | 8 +- pom.xml | 26 +++++- zlt-business/code-generator/pom.xml | 2 +- zlt-business/file-center/pom.xml | 2 +- zlt-business/pom.xml | 2 +- zlt-business/user-center/pom.xml | 2 +- zlt-commons/pom.xml | 3 +- .../pom.xml | 2 +- .../zlt-common-spring-boot-starter/pom.xml | 2 +- .../zlt-db-spring-boot-starter/pom.xml | 2 +- .../zlt-log-spring-boot-starter/pom.xml | 2 +- .../zlt-mq-spring-boot-starter/pom.xml | 11 --- .../zlt-redis-spring-boot-starter/pom.xml | 2 +- .../zlt-ribbon-spring-boot-starter/pom.xml | 2 +- .../zlt-sentinel-spring-boot-starter/pom.xml | 2 +- .../zlt-swagger2-spring-boot-starter/pom.xml | 2 +- zlt-config/pom.xml | 2 +- .../src/main/resources/application.properties | 2 +- zlt-demo/pom.xml | 16 ++++ zlt-demo/txlcn-demo/README.md | 48 +++++++++++ zlt-demo/txlcn-demo/pom.xml | 39 +++++++++ zlt-demo/txlcn-demo/txlcn-demo-common/pom.xml | 69 ++++++++++++++++ .../org/txlcn/demo/common/db/domain/Demo.java | 27 +++++++ .../demo/common/db/mapper/BaseDemoMapper.java | 22 ++++++ .../common/spring/FeignConfiguration.java | 17 ++++ .../demo/common/spring/ServiceBClient.java | 18 +++++ .../demo/common/spring/ServiceBFallback.java | 17 ++++ .../demo/common/spring/ServiceCClient.java | 18 +++++ .../demo/common/spring/ServiceCFallback.java | 19 +++++ .../main/resources/META-INF/spring.factories | 1 + .../txlcn-demo-spring-service-a/pom.xml | 29 +++++++ .../org/txlcn/demo/ServiceAApplication.java | 21 +++++ .../txlcn/demo/servicea/DemoController.java | 29 +++++++ .../org/txlcn/demo/servicea/DemoMapper.java | 14 ++++ .../org/txlcn/demo/servicea/DemoService.java | 12 +++ .../txlcn/demo/servicea/DemoServiceImpl.java | 55 +++++++++++++ .../src/main/resources/application.yml | 19 +++++ .../src/main/resources/bootstrap.yml | 14 ++++ .../txlcn-demo-spring-service-b/pom.xml | 28 +++++++ .../org/txlcn/demo/ServiceBApplication.java | 21 +++++ .../txlcn/demo/serviceb/DemoController.java | 26 ++++++ .../org/txlcn/demo/serviceb/DemoMapper.java | 14 ++++ .../org/txlcn/demo/serviceb/DemoService.java | 12 +++ .../txlcn/demo/serviceb/DemoServiceImpl.java | 41 ++++++++++ .../src/main/resources/application.yml | 19 +++++ .../src/main/resources/bootstrap.yml | 14 ++++ .../txlcn-demo-spring-service-c/pom.xml | 28 +++++++ .../org/txlcn/demo/ServiceCApplication.java | 21 +++++ .../txlcn/demo/servicec/DemoController.java | 24 ++++++ .../org/txlcn/demo/servicec/DemoMapper.java | 14 ++++ .../org/txlcn/demo/servicec/DemoService.java | 12 +++ .../txlcn/demo/servicec/DemoServiceImpl.java | 48 +++++++++++ .../src/main/resources/application.yml | 19 +++++ .../src/main/resources/bootstrap.yml | 14 ++++ zlt-demo/txlcn-demo/txlcn-demo.sql | 23 ++++++ zlt-doc/sql/tx-manager.sql | 19 +++++ zlt-doc/sql/tx_logger.sql | 18 +++++ zlt-gateway/pom.xml | 2 +- zlt-gateway/spring-cloud-gateway/pom.xml | 2 +- zlt-gateway/zuul-gateway/pom.xml | 2 +- zlt-job/job-admin/pom.xml | 2 +- zlt-job/job-core/pom.xml | 2 +- zlt-job/job-executor-samples/pom.xml | 2 +- zlt-job/pom.xml | 2 +- zlt-monitor/log-center/pom.xml | 2 +- zlt-monitor/pom.xml | 2 +- zlt-monitor/sc-admin/pom.xml | 2 +- zlt-search/pom.xml | 11 --- zlt-transaction/pom.xml | 17 ++++ zlt-transaction/txlcn-tm/pom.xml | 79 +++++++++++++++++++ .../tm/TransactionManagerApplication.java | 18 +++++ .../src/main/resources/application.properties | 28 +++++++ .../src/main/resources/bootstrap.properties | 5 ++ zlt-uaa/pom.xml | 2 +- zlt-web/back-web/pom.xml | 2 +- .../com/central/web/BackWebApplication.java | 2 - zlt-web/pom.xml | 8 +- 78 files changed, 1126 insertions(+), 62 deletions(-) delete mode 100644 zlt-commons/zlt-mq-spring-boot-starter/pom.xml create mode 100644 zlt-demo/pom.xml create mode 100644 zlt-demo/txlcn-demo/README.md create mode 100644 zlt-demo/txlcn-demo/pom.xml create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-common/pom.xml create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/db/domain/Demo.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/db/mapper/BaseDemoMapper.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/FeignConfiguration.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/ServiceBClient.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/ServiceBFallback.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/ServiceCClient.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/ServiceCFallback.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-common/src/main/resources/META-INF/spring.factories create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/pom.xml create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/ServiceAApplication.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/servicea/DemoController.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/servicea/DemoMapper.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/servicea/DemoService.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/servicea/DemoServiceImpl.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/resources/application.yml create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/resources/bootstrap.yml create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/pom.xml create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/ServiceBApplication.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/serviceb/DemoController.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/serviceb/DemoMapper.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/serviceb/DemoService.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/serviceb/DemoServiceImpl.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/resources/application.yml create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/resources/bootstrap.yml create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/pom.xml create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/ServiceCApplication.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/servicec/DemoController.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/servicec/DemoMapper.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/servicec/DemoService.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/servicec/DemoServiceImpl.java create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/resources/application.yml create mode 100644 zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/resources/bootstrap.yml create mode 100644 zlt-demo/txlcn-demo/txlcn-demo.sql create mode 100644 zlt-doc/sql/tx-manager.sql create mode 100644 zlt-doc/sql/tx_logger.sql delete mode 100644 zlt-search/pom.xml create mode 100644 zlt-transaction/pom.xml create mode 100644 zlt-transaction/txlcn-tm/pom.xml create mode 100644 zlt-transaction/txlcn-tm/src/main/java/org/txlcn/tm/TransactionManagerApplication.java create mode 100644 zlt-transaction/txlcn-tm/src/main/resources/application.properties create mode 100644 zlt-transaction/txlcn-tm/src/main/resources/bootstrap.properties diff --git a/.gitignore b/.gitignore index b991d3e..48f9436 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .idea/ logs/ target/ +.txlcn/ *.iml *.versionsBackup \ No newline at end of file diff --git a/README.md b/README.md index 7de6a9c..5799d5d 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ * 配置中心账号密码:nacos/nacos * APM监控账号密码:admin/admin * Grafana账号:zlt/zlt + * txlcn事务管理器密码:admin * **演示环境有全方位的监控示例:日志系统 + APM系统 + GPE系统** * **[项目更新日志](https://www.kancloud.cn/zlt2000/microservices-platform/936235)** * **[文档更新日志](https://www.kancloud.cn/zlt2000/microservices-platform/936236)** @@ -59,6 +60,7 @@ * 分布式任务调度器 * 支持CI/CD持续集成(包括前端和后端) * 分布式高性能Id生成器 + * 分布式事务 * **系统监控功能** * 服务调用链监控 * 应用拓扑图 @@ -96,7 +98,6 @@ central-platform -- 父项目,公共依赖 │ │ ├─zlt-common-spring-boot-starter -- 封装通用操作逻辑 │ │ ├─zlt-db-spring-boot-starter -- 封装数据库通用操作逻辑 │ │ ├─zlt-log-spring-boot-starter -- 封装log通用操作逻辑 -│ │ ├─zlt-mq-spring-boot-starter -- 封装mq通用操作逻辑 │ │ ├─zlt-redis-spring-boot-starter -- 封装Redis通用操作逻辑 │ │ ├─zlt-ribbon-spring-boot-starter -- 封装Ribbon和Feign的通用操作逻辑 │ │ ├─zlt-sentinel-spring-boot-starter -- 封装Sentinel的通用操作逻辑 @@ -115,9 +116,12 @@ central-platform -- 父项目,公共依赖 │ │ ├─log-center -- 日志中心[6200] │ ├─zlt-uaa -- spring-security认证中心[8000] │ ├─zlt-register -- 注册中心Nacos[8848] -│ ├─zlt-search -- 搜索引擎一级工程 │ ├─zlt-web -- 前端一级工程 │ │ ├─back-web -- 后台前端[8066] +│ ├─zlt-transaction -- 事务一级工程 +│ │ ├─txlcn-tm -- tx-lcn事务管理器[7970] +│ ├─zlt-demo -- demo一级工程 +│ │ ├─txlcn-demo -- txlcn的demo ```   diff --git a/pom.xml b/pom.xml index 82b02cd..4a52ca9 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.zlt central-platform - 1.3.0 + 1.4.0 pom @@ -23,7 +23,7 @@ 1.1.10 1.14 2.0.3 - 2.3.4.RELEASE + 2.3.5.RELEASE 1.0.9.RELEASE 3.9.1 0.0.9 @@ -35,6 +35,7 @@ 2.0.4 1.7 1.10 + 5.0.2.RELEASE Cairo-SR3 0.2.1.RELEASE 2.0.8.RELEASE @@ -264,6 +265,21 @@ commons-configuration ${commons-configuration.version} + + com.codingapi.txlcn + txlcn-tm + ${txlcn.version} + + + com.codingapi.txlcn + txlcn-tc + ${txlcn.version} + + + com.codingapi.txlcn + txlcn-txmsg-netty + ${txlcn.version} + org.springframework.boot @@ -351,9 +367,11 @@ zlt-job zlt-monitor - - zlt-search + + zlt-transaction zlt-config + + zlt-demo \ No newline at end of file diff --git a/zlt-business/code-generator/pom.xml b/zlt-business/code-generator/pom.xml index f74066d..eccb880 100644 --- a/zlt-business/code-generator/pom.xml +++ b/zlt-business/code-generator/pom.xml @@ -4,7 +4,7 @@ com.zlt zlt-business - 1.3.0 + 1.4.0 code-generator diff --git a/zlt-business/file-center/pom.xml b/zlt-business/file-center/pom.xml index 797fb35..61bd531 100644 --- a/zlt-business/file-center/pom.xml +++ b/zlt-business/file-center/pom.xml @@ -4,7 +4,7 @@ com.zlt zlt-business - 1.3.0 + 1.4.0 file-center 文件中心 diff --git a/zlt-business/pom.xml b/zlt-business/pom.xml index 097e533..9898ab8 100644 --- a/zlt-business/pom.xml +++ b/zlt-business/pom.xml @@ -4,7 +4,7 @@ com.zlt central-platform - 1.3.0 + 1.4.0 zlt-business 业务中心 diff --git a/zlt-business/user-center/pom.xml b/zlt-business/user-center/pom.xml index 32ee70d..497ad1d 100644 --- a/zlt-business/user-center/pom.xml +++ b/zlt-business/user-center/pom.xml @@ -4,7 +4,7 @@ com.zlt zlt-business - 1.3.0 + 1.4.0 user-center 用户中心 diff --git a/zlt-commons/pom.xml b/zlt-commons/pom.xml index c23137f..82fc582 100644 --- a/zlt-commons/pom.xml +++ b/zlt-commons/pom.xml @@ -4,7 +4,7 @@ com.zlt central-platform - 1.3.0 + 1.4.0 zlt-commons 通用组件 @@ -18,7 +18,6 @@ zlt-log-spring-boot-starter zlt-ribbon-spring-boot-starter zlt-auth-client-spring-boot-starter - zlt-mq-spring-boot-starter zlt-sentinel-spring-boot-starter \ No newline at end of file diff --git a/zlt-commons/zlt-auth-client-spring-boot-starter/pom.xml b/zlt-commons/zlt-auth-client-spring-boot-starter/pom.xml index 134d526..2718fec 100644 --- a/zlt-commons/zlt-auth-client-spring-boot-starter/pom.xml +++ b/zlt-commons/zlt-auth-client-spring-boot-starter/pom.xml @@ -5,7 +5,7 @@ com.zlt zlt-commons - 1.3.0 + 1.4.0 4.0.0 jar diff --git a/zlt-commons/zlt-common-spring-boot-starter/pom.xml b/zlt-commons/zlt-common-spring-boot-starter/pom.xml index 82b1f4a..c5ef3bc 100644 --- a/zlt-commons/zlt-common-spring-boot-starter/pom.xml +++ b/zlt-commons/zlt-common-spring-boot-starter/pom.xml @@ -4,7 +4,7 @@ com.zlt zlt-commons - 1.3.0 + 1.4.0 zlt-common-spring-boot-starter 公共通用组件 diff --git a/zlt-commons/zlt-db-spring-boot-starter/pom.xml b/zlt-commons/zlt-db-spring-boot-starter/pom.xml index e94e069..5fd8d51 100644 --- a/zlt-commons/zlt-db-spring-boot-starter/pom.xml +++ b/zlt-commons/zlt-db-spring-boot-starter/pom.xml @@ -5,7 +5,7 @@ com.zlt zlt-commons - 1.3.0 + 1.4.0 4.0.0 jar diff --git a/zlt-commons/zlt-log-spring-boot-starter/pom.xml b/zlt-commons/zlt-log-spring-boot-starter/pom.xml index 976a4a6..43fab50 100644 --- a/zlt-commons/zlt-log-spring-boot-starter/pom.xml +++ b/zlt-commons/zlt-log-spring-boot-starter/pom.xml @@ -5,7 +5,7 @@ com.zlt zlt-commons - 1.3.0 + 1.4.0 4.0.0 jar diff --git a/zlt-commons/zlt-mq-spring-boot-starter/pom.xml b/zlt-commons/zlt-mq-spring-boot-starter/pom.xml deleted file mode 100644 index be0092b..0000000 --- a/zlt-commons/zlt-mq-spring-boot-starter/pom.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - com.zlt - zlt-commons - 1.3.0 - - 4.0.0 - zlt-mq-spring-boot-starter - 消息队列通用组件 - jar - \ No newline at end of file diff --git a/zlt-commons/zlt-redis-spring-boot-starter/pom.xml b/zlt-commons/zlt-redis-spring-boot-starter/pom.xml index 6aa9391..de6b75e 100644 --- a/zlt-commons/zlt-redis-spring-boot-starter/pom.xml +++ b/zlt-commons/zlt-redis-spring-boot-starter/pom.xml @@ -5,7 +5,7 @@ com.zlt zlt-commons - 1.3.0 + 1.4.0 4.0.0 jar diff --git a/zlt-commons/zlt-ribbon-spring-boot-starter/pom.xml b/zlt-commons/zlt-ribbon-spring-boot-starter/pom.xml index 9bcc201..eea0f21 100644 --- a/zlt-commons/zlt-ribbon-spring-boot-starter/pom.xml +++ b/zlt-commons/zlt-ribbon-spring-boot-starter/pom.xml @@ -5,7 +5,7 @@ com.zlt zlt-commons - 1.3.0 + 1.4.0 4.0.0 jar diff --git a/zlt-commons/zlt-sentinel-spring-boot-starter/pom.xml b/zlt-commons/zlt-sentinel-spring-boot-starter/pom.xml index 81e4128..1f9b1cf 100644 --- a/zlt-commons/zlt-sentinel-spring-boot-starter/pom.xml +++ b/zlt-commons/zlt-sentinel-spring-boot-starter/pom.xml @@ -5,7 +5,7 @@ com.zlt zlt-commons - 1.3.0 + 1.4.0 4.0.0 jar diff --git a/zlt-commons/zlt-swagger2-spring-boot-starter/pom.xml b/zlt-commons/zlt-swagger2-spring-boot-starter/pom.xml index 2bd7269..3157ea1 100644 --- a/zlt-commons/zlt-swagger2-spring-boot-starter/pom.xml +++ b/zlt-commons/zlt-swagger2-spring-boot-starter/pom.xml @@ -5,7 +5,7 @@ com.zlt zlt-commons - 1.3.0 + 1.4.0 4.0.0 jar diff --git a/zlt-config/pom.xml b/zlt-config/pom.xml index f06dd39..f7b73a2 100644 --- a/zlt-config/pom.xml +++ b/zlt-config/pom.xml @@ -5,7 +5,7 @@ com.zlt central-platform - 1.3.0 + 1.4.0 4.0.0 jar diff --git a/zlt-config/src/main/resources/application.properties b/zlt-config/src/main/resources/application.properties index 5eade57..df32a0e 100644 --- a/zlt-config/src/main/resources/application.properties +++ b/zlt-config/src/main/resources/application.properties @@ -26,7 +26,7 @@ ribbon.ReadTimeout=15000 # 对当前实例的重试次数 默认0 #ribbon.MaxAutoRetries=1 # 切换实例的重试次数 默认1 -#ribbon.MaxAutoRetriesNextServer=2 +ribbon.MaxAutoRetriesNextServer=0 ##### feign配置 diff --git a/zlt-demo/pom.xml b/zlt-demo/pom.xml new file mode 100644 index 0000000..f46fee9 --- /dev/null +++ b/zlt-demo/pom.xml @@ -0,0 +1,16 @@ + + 4.0.0 + + com.zlt + central-platform + 1.4.0 + + zlt-demo + pom + + + + txlcn-demo + + \ No newline at end of file diff --git a/zlt-demo/txlcn-demo/README.md b/zlt-demo/txlcn-demo/README.md new file mode 100644 index 0000000..73cbd85 --- /dev/null +++ b/zlt-demo/txlcn-demo/README.md @@ -0,0 +1,48 @@ +[TOC] + +## 一、说明 + +本demo是通过tx-lcn测试lcn模式的分布式事务,主要是模拟以下两个场景 + +1. `service-a` 调用`service-b`调用`service-c` 都成功 +2. `service-a` 调用`service-b`调用`service-c` 最后`service-a`抛出异常全部回滚 + + + +  + +## 二、运行步骤 + +### 1. 初始化TxManager的数据 + +执行`zlt-doc\sql\tx-manager.sql`和`zlt-doc\sql\tx_logger.sql`脚本 + +### 2. 修改TxManager的配置 + +工程目录:`zlt-transaction\txlcn-tm`,修改nacos、数据库和redis + +### 2. 启动TxManager + +工程目录:`zlt-transaction\txlcn-tm` + +### 3. 初始化demo的数据 + +执行`zlt-demo\txlcn-demo\txlcn-demo.sql`脚本 + +### 4. 修改3个服务的配置 + +`nacos`地址和数据库地址 + + + +  + +## 三、启动模块与测试 + +### 1. 正常提交事务 +访问 发起方提供的Rest接口 `/txlcn?value=the-value`。发现事务全部提交 +![result](https://www.txlcn.org/img/docs/result.png) + +### 2. 回滚事务 +访问 发起方提供的Rest接口 `/txlcn?value=the-value&ex=throw`。发现发起方由本地事务回滚,而参与方ServiceB、ServiceC,由于TX-LCN的协调,数据也回滚了。 +![error_result](https://www.txlcn.org/img/docs/error_result.png) \ No newline at end of file diff --git a/zlt-demo/txlcn-demo/pom.xml b/zlt-demo/txlcn-demo/pom.xml new file mode 100644 index 0000000..210aae6 --- /dev/null +++ b/zlt-demo/txlcn-demo/pom.xml @@ -0,0 +1,39 @@ + + 4.0.0 + + com.zlt + zlt-demo + 1.4.0 + + txlcn-demo + txlcn分布式事务demo + pom + + + txlcn-demo-common + + txlcn-demo-spring-service-a + + txlcn-demo-spring-service-b + + txlcn-demo-spring-service-c + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + ${project.artifactId} + + \ No newline at end of file diff --git a/zlt-demo/txlcn-demo/txlcn-demo-common/pom.xml b/zlt-demo/txlcn-demo/txlcn-demo-common/pom.xml new file mode 100644 index 0000000..f981e2d --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-common/pom.xml @@ -0,0 +1,69 @@ + + 4.0.0 + + com.zlt + txlcn-demo + 1.4.0 + + txlcn-demo-common + demo-common + demo-common project for Spring Boot + + + + com.codingapi.txlcn + txlcn-tc + + + com.codingapi.txlcn + txlcn-txmsg-netty + + + + com.zlt + zlt-config + + + org.springframework.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + com.zlt + zlt-log-spring-boot-starter + + + com.zlt + zlt-db-spring-boot-starter + + + com.zlt + zlt-ribbon-spring-boot-starter + + + com.zlt + zlt-sentinel-spring-boot-starter + + + + org.springframework.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + mysql + mysql-connector-java + + + + org.springframework.boot + spring-boot-starter-actuator + + + + org.springframework.boot + spring-boot-starter-web + + + diff --git a/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/db/domain/Demo.java b/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/db/domain/Demo.java new file mode 100644 index 0000000..6178c97 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/db/domain/Demo.java @@ -0,0 +1,27 @@ +package org.txlcn.demo.common.db.domain; + +import com.codingapi.txlcn.common.util.id.RandomUtils; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@AllArgsConstructor +@NoArgsConstructor +@Data +public class Demo { + private Long id; + private String kid = RandomUtils.randomKey(); + private String demoField; + private String groupId; + private Date createTime; + private String appName; + +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/db/mapper/BaseDemoMapper.java b/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/db/mapper/BaseDemoMapper.java new file mode 100644 index 0000000..3536fd1 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/db/mapper/BaseDemoMapper.java @@ -0,0 +1,22 @@ +package org.txlcn.demo.common.db.mapper; + +import org.txlcn.demo.common.db.domain.Demo; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@Mapper +public interface BaseDemoMapper { + + @Insert("insert into t_demo(kid, demo_field, group_id, create_time,app_name) values(#{kid}, #{demoField}, #{groupId}, #{createTime},#{appName})") + void save(Demo demo); + + @Delete("delete from t_demo where id=#{id}") + void deleteByKId(Long id); +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/FeignConfiguration.java b/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/FeignConfiguration.java new file mode 100644 index 0000000..df3148d --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/FeignConfiguration.java @@ -0,0 +1,17 @@ +package org.txlcn.demo.common.spring; + +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@ComponentScan +@Configuration +@EnableFeignClients +public class FeignConfiguration { +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/ServiceBClient.java b/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/ServiceBClient.java new file mode 100644 index 0000000..6600eb4 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/ServiceBClient.java @@ -0,0 +1,18 @@ +package org.txlcn.demo.common.spring; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@FeignClient(value = "txlcn-demo-spring-service-b", fallback = ServiceBFallback.class) +public interface ServiceBClient { + + @GetMapping("/rpc") + String rpc(@RequestParam("value") String name); +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/ServiceBFallback.java b/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/ServiceBFallback.java new file mode 100644 index 0000000..e12b9bc --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/ServiceBFallback.java @@ -0,0 +1,17 @@ +package org.txlcn.demo.common.spring; + +import org.springframework.stereotype.Component; + +/** + * Description: + * Date: 19-2-19 下午1:53 + * + * @author ujued + */ +@Component +public class ServiceBFallback implements ServiceBClient { + @Override + public String rpc(String name) { + return "fallback"; + } +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/ServiceCClient.java b/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/ServiceCClient.java new file mode 100644 index 0000000..9d838af --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/ServiceCClient.java @@ -0,0 +1,18 @@ +package org.txlcn.demo.common.spring; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@FeignClient(value = "txlcn-demo-spring-service-c", fallback = ServiceCFallback.class) +public interface ServiceCClient { + + @GetMapping("/rpc") + String rpc(@RequestParam("value") String name); +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/ServiceCFallback.java b/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/ServiceCFallback.java new file mode 100644 index 0000000..c67b4cd --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/java/org/txlcn/demo/common/spring/ServiceCFallback.java @@ -0,0 +1,19 @@ +package org.txlcn.demo.common.spring; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * Description: + * Date: 19-2-19 下午1:53 + * + * @author ujued + */ +@Component +@Slf4j +public class ServiceCFallback implements ServiceCClient { + @Override + public String rpc(String name) { + return "fallback"; + } +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/resources/META-INF/spring.factories b/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..086747a --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-common/src/main/resources/META-INF/spring.factories @@ -0,0 +1 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.txlcn.demo.common.spring.FeignConfiguration \ No newline at end of file diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/pom.xml b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/pom.xml new file mode 100644 index 0000000..a11baca --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/pom.xml @@ -0,0 +1,29 @@ + + + com.zlt + txlcn-demo + 1.4.0 + + 4.0.0 + + txlcn-demo-spring-service-a + txlcn-demo-spring-service-a + + + + com.zlt + txlcn-demo-common + ${project.version} + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/ServiceAApplication.java b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/ServiceAApplication.java new file mode 100644 index 0000000..ea86fbf --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/ServiceAApplication.java @@ -0,0 +1,21 @@ +package org.txlcn.demo; + +import com.codingapi.txlcn.tc.config.EnableDistributedTransaction; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@SpringBootApplication +@EnableDiscoveryClient +@EnableDistributedTransaction +public class ServiceAApplication { + public static void main(String[] args) { + SpringApplication.run(ServiceAApplication.class, args); + } +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/servicea/DemoController.java b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/servicea/DemoController.java new file mode 100644 index 0000000..3d75f2b --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/servicea/DemoController.java @@ -0,0 +1,29 @@ +package org.txlcn.demo.servicea; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@RestController +public class DemoController { + + private final DemoService demoService; + + @Autowired + public DemoController(DemoService demoService) { + this.demoService = demoService; + } + + @RequestMapping("/txlcn") + public String execute(@RequestParam("value") String value, @RequestParam(value = "ex", required = false) String exFlag + , @RequestParam(value = "f", required = false) String flag) { + return demoService.execute(value, exFlag, flag); + } +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/servicea/DemoMapper.java b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/servicea/DemoMapper.java new file mode 100644 index 0000000..caeed6f --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/servicea/DemoMapper.java @@ -0,0 +1,14 @@ +package org.txlcn.demo.servicea; + +import org.apache.ibatis.annotations.Mapper; +import org.txlcn.demo.common.db.mapper.BaseDemoMapper; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@Mapper +public interface DemoMapper extends BaseDemoMapper { +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/servicea/DemoService.java b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/servicea/DemoService.java new file mode 100644 index 0000000..a3d20e8 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/servicea/DemoService.java @@ -0,0 +1,12 @@ +package org.txlcn.demo.servicea; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +public interface DemoService { + + String execute(String value, String ex, String flag); +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/servicea/DemoServiceImpl.java b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/servicea/DemoServiceImpl.java new file mode 100644 index 0000000..366fde3 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/java/org/txlcn/demo/servicea/DemoServiceImpl.java @@ -0,0 +1,55 @@ +package org.txlcn.demo.servicea; + +import com.codingapi.txlcn.common.util.Transactions; +import com.codingapi.txlcn.tc.annotation.LcnTransaction; +import com.codingapi.txlcn.tracing.TracingContext; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.txlcn.demo.common.db.domain.Demo; +import org.txlcn.demo.common.spring.ServiceBClient; +import org.txlcn.demo.common.spring.ServiceCClient; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.Objects; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@Service +@Slf4j +public class DemoServiceImpl implements DemoService { + @Resource + private DemoMapper demoMapper; + @Resource + private ServiceBClient serviceBClient; + @Resource + private ServiceCClient serviceCClient; + + @LcnTransaction + @Transactional(rollbackFor = Exception.class) + @Override + public String execute(String value, String exFlag, String flag) { + String dResp = serviceBClient.rpc(value); + // step2. call remote ServiceB + String eResp = serviceCClient.rpc(value); + // step3. execute local transaction + Demo demo = new Demo(); + demo.setGroupId(TracingContext.tracing().groupId()); + demo.setDemoField(value); + demo.setCreateTime(new Date()); + demo.setAppName(Transactions.getApplicationId()); + demoMapper.save(demo); + + // 置异常标志,DTX 回滚 + if (Objects.nonNull(exFlag)) { + throw new IllegalStateException("by exFlag"); + } + + return dResp + " > " + eResp + " > " + "ok-service-a"; + } +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/resources/application.yml b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/resources/application.yml new file mode 100644 index 0000000..3d8e197 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/resources/application.yml @@ -0,0 +1,19 @@ +spring: + datasource: + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://${zlt.datasource.ip}:3306/txlcn-demo?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull + username: ${zlt.datasource.username} + password: ${zlt.datasource.password} + +## tx-manager 配置 +tx-lcn: + ribbon: + loadbalancer: + dtx: + enabled: true + logger: + enabled: true + driver-class-name: com.mysql.jdbc.Driver + jdbc-url: jdbc:mysql://${zlt.datasource.ip}:3306/tx_logger?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull + username: ${zlt.datasource.username} + password: ${zlt.datasource.password} \ No newline at end of file diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/resources/bootstrap.yml b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..9e4e284 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-a/src/main/resources/bootstrap.yml @@ -0,0 +1,14 @@ +server: + port: 12011 + +zlt: + nacos: + server-addr: 192.168.28.130:8848 + +spring: + application: + name: txlcn-demo-spring-service-a + cloud: + nacos: + discovery: + server-addr: ${zlt.nacos.server-addr} \ No newline at end of file diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/pom.xml b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/pom.xml new file mode 100644 index 0000000..7e21993 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/pom.xml @@ -0,0 +1,28 @@ + + + com.zlt + txlcn-demo + 1.4.0 + + 4.0.0 + txlcn-demo-spring-service-b + txlcn-demo-spring-service-b + + + + com.zlt + txlcn-demo-common + ${project.version} + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/ServiceBApplication.java b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/ServiceBApplication.java new file mode 100644 index 0000000..a2ba3e6 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/ServiceBApplication.java @@ -0,0 +1,21 @@ +package org.txlcn.demo; + +import com.codingapi.txlcn.tc.config.EnableDistributedTransaction; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@SpringBootApplication +@EnableDiscoveryClient +@EnableDistributedTransaction +public class ServiceBApplication { + public static void main(String[] args) { + SpringApplication.run(ServiceBApplication.class, args); + } +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/serviceb/DemoController.java b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/serviceb/DemoController.java new file mode 100644 index 0000000..a6ede52 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/serviceb/DemoController.java @@ -0,0 +1,26 @@ +package org.txlcn.demo.serviceb; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@RestController +public class DemoController { + + @Autowired + private DemoService demoService; + + @GetMapping("/rpc") + public String rpc(@RequestParam("value") String value, HttpServletRequest servletRequest) { + return demoService.rpc(value); + } +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/serviceb/DemoMapper.java b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/serviceb/DemoMapper.java new file mode 100644 index 0000000..a0453e2 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/serviceb/DemoMapper.java @@ -0,0 +1,14 @@ +package org.txlcn.demo.serviceb; + +import org.apache.ibatis.annotations.Mapper; +import org.txlcn.demo.common.db.mapper.BaseDemoMapper; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@Mapper +public interface DemoMapper extends BaseDemoMapper { +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/serviceb/DemoService.java b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/serviceb/DemoService.java new file mode 100644 index 0000000..586e56d --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/serviceb/DemoService.java @@ -0,0 +1,12 @@ +package org.txlcn.demo.serviceb; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +public interface DemoService { + + String rpc(String value); +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/serviceb/DemoServiceImpl.java b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/serviceb/DemoServiceImpl.java new file mode 100644 index 0000000..c26e3dd --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/java/org/txlcn/demo/serviceb/DemoServiceImpl.java @@ -0,0 +1,41 @@ +package org.txlcn.demo.serviceb; + +import com.codingapi.txlcn.common.util.Transactions; +import com.codingapi.txlcn.tc.annotation.DTXPropagation; +import com.codingapi.txlcn.tc.annotation.LcnTransaction; +import com.codingapi.txlcn.tc.annotation.TxcTransaction; +import com.codingapi.txlcn.tracing.TracingContext; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.txlcn.demo.common.db.domain.Demo; + +import javax.annotation.Resource; +import java.util.Date; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@Service +@Slf4j +public class DemoServiceImpl implements DemoService { + @Resource + private DemoMapper demoMapper; + + @Override + @LcnTransaction + @Transactional(rollbackFor = Exception.class) + public String rpc(String value) { + Demo demo = new Demo(); + demo.setGroupId(TracingContext.tracing().groupId()); + demo.setDemoField(value); + demo.setAppName(Transactions.getApplicationId()); + demo.setCreateTime(new Date()); + demoMapper.save(demo); + return "ok-service-b"; + } +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/resources/application.yml b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/resources/application.yml new file mode 100644 index 0000000..3d8e197 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/resources/application.yml @@ -0,0 +1,19 @@ +spring: + datasource: + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://${zlt.datasource.ip}:3306/txlcn-demo?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull + username: ${zlt.datasource.username} + password: ${zlt.datasource.password} + +## tx-manager 配置 +tx-lcn: + ribbon: + loadbalancer: + dtx: + enabled: true + logger: + enabled: true + driver-class-name: com.mysql.jdbc.Driver + jdbc-url: jdbc:mysql://${zlt.datasource.ip}:3306/tx_logger?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull + username: ${zlt.datasource.username} + password: ${zlt.datasource.password} \ No newline at end of file diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/resources/bootstrap.yml b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..527c372 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-b/src/main/resources/bootstrap.yml @@ -0,0 +1,14 @@ +server: + port: 12002 + +zlt: + nacos: + server-addr: 192.168.28.130:8848 + +spring: + application: + name: txlcn-demo-spring-service-b + cloud: + nacos: + discovery: + server-addr: ${zlt.nacos.server-addr} \ No newline at end of file diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/pom.xml b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/pom.xml new file mode 100644 index 0000000..954ea2c --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/pom.xml @@ -0,0 +1,28 @@ + + + com.zlt + txlcn-demo + 1.4.0 + + 4.0.0 + txlcn-demo-spring-service-c + txlcn-demo-spring-service-c + + + + com.zlt + txlcn-demo-common + ${project.version} + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/ServiceCApplication.java b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/ServiceCApplication.java new file mode 100644 index 0000000..fb0c405 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/ServiceCApplication.java @@ -0,0 +1,21 @@ +package org.txlcn.demo; + +import com.codingapi.txlcn.tc.config.EnableDistributedTransaction; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@SpringBootApplication +@EnableDiscoveryClient +@EnableDistributedTransaction +public class ServiceCApplication { + public static void main(String[] args) { + SpringApplication.run(ServiceCApplication.class, args); + } +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/servicec/DemoController.java b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/servicec/DemoController.java new file mode 100644 index 0000000..dc2ae65 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/servicec/DemoController.java @@ -0,0 +1,24 @@ +package org.txlcn.demo.servicec; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@RestController +public class DemoController { + + @Autowired + private DemoService demoService; + + @GetMapping("/rpc") + public String rpc(@RequestParam("value") String value) { + return demoService.rpc(value); + } +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/servicec/DemoMapper.java b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/servicec/DemoMapper.java new file mode 100644 index 0000000..4b7747e --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/servicec/DemoMapper.java @@ -0,0 +1,14 @@ +package org.txlcn.demo.servicec; + +import org.apache.ibatis.annotations.Mapper; +import org.txlcn.demo.common.db.mapper.BaseDemoMapper; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@Mapper +public interface DemoMapper extends BaseDemoMapper { +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/servicec/DemoService.java b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/servicec/DemoService.java new file mode 100644 index 0000000..3be9ce6 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/servicec/DemoService.java @@ -0,0 +1,12 @@ +package org.txlcn.demo.servicec; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +public interface DemoService { + + String rpc(String value); +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/servicec/DemoServiceImpl.java b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/servicec/DemoServiceImpl.java new file mode 100644 index 0000000..c137f30 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/java/org/txlcn/demo/servicec/DemoServiceImpl.java @@ -0,0 +1,48 @@ +package org.txlcn.demo.servicec; + +import com.codingapi.txlcn.common.util.Transactions; +import com.codingapi.txlcn.tc.annotation.DTXPropagation; +import com.codingapi.txlcn.tc.annotation.LcnTransaction; +import com.codingapi.txlcn.tc.annotation.TccTransaction; +import com.codingapi.txlcn.tc.support.DTXUserControls; +import com.codingapi.txlcn.tracing.TracingContext; +import com.google.common.collect.Sets; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.txlcn.demo.common.db.domain.Demo; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Description: + * Date: 2018/12/25 + * + * @author ujued + */ +@Service +@Slf4j +public class DemoServiceImpl implements DemoService { + @Resource + private DemoMapper demoMapper; + + @Override + @LcnTransaction + @Transactional(rollbackFor = Exception.class) + public String rpc(String value) { + Demo demo = new Demo(); + demo.setDemoField(value); + demo.setCreateTime(new Date()); + demo.setAppName(Transactions.getApplicationId()); + demo.setGroupId(TracingContext.tracing().groupId()); + demoMapper.save(demo); + if ("456".equals(value)) { + throw new IllegalStateException("by test"); + } + return "ok-service-c"; + } +} diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/resources/application.yml b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/resources/application.yml new file mode 100644 index 0000000..3d8e197 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/resources/application.yml @@ -0,0 +1,19 @@ +spring: + datasource: + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://${zlt.datasource.ip}:3306/txlcn-demo?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull + username: ${zlt.datasource.username} + password: ${zlt.datasource.password} + +## tx-manager 配置 +tx-lcn: + ribbon: + loadbalancer: + dtx: + enabled: true + logger: + enabled: true + driver-class-name: com.mysql.jdbc.Driver + jdbc-url: jdbc:mysql://${zlt.datasource.ip}:3306/tx_logger?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull + username: ${zlt.datasource.username} + password: ${zlt.datasource.password} \ No newline at end of file diff --git a/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/resources/bootstrap.yml b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..a5fe647 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo-spring-service-c/src/main/resources/bootstrap.yml @@ -0,0 +1,14 @@ +server: + port: 12003 + +zlt: + nacos: + server-addr: 192.168.28.130:8848 + +spring: + application: + name: txlcn-demo-spring-service-c + cloud: + nacos: + discovery: + server-addr: ${zlt.nacos.server-addr} \ No newline at end of file diff --git a/zlt-demo/txlcn-demo/txlcn-demo.sql b/zlt-demo/txlcn-demo/txlcn-demo.sql new file mode 100644 index 0000000..a74c956 --- /dev/null +++ b/zlt-demo/txlcn-demo/txlcn-demo.sql @@ -0,0 +1,23 @@ +-- +-- Current Database: `txlcn-demo` +-- + +CREATE DATABASE `txlcn-demo` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +USE `txlcn-demo`; + +-- +-- Table structure for table `t_demo` +-- + +DROP TABLE IF EXISTS `t_demo`; +CREATE TABLE `t_demo` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `kid` varchar(45) DEFAULT NULL, + `demo_field` varchar(255) DEFAULT NULL, + `group_id` varchar(64) DEFAULT NULL, + `unit_id` varchar(32) DEFAULT NULL, + `app_name` varchar(128) DEFAULT NULL, + `create_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; diff --git a/zlt-doc/sql/tx-manager.sql b/zlt-doc/sql/tx-manager.sql new file mode 100644 index 0000000..915e99d --- /dev/null +++ b/zlt-doc/sql/tx-manager.sql @@ -0,0 +1,19 @@ +CREATE DATABASE IF NOT EXISTS `tx-manager` DEFAULT CHARACTER SET = utf8; +Use `tx-manager`; + +-- ---------------------------- +-- Table structure for tx-manager +-- ---------------------------- +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, + `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; diff --git a/zlt-doc/sql/tx_logger.sql b/zlt-doc/sql/tx_logger.sql new file mode 100644 index 0000000..80a9df1 --- /dev/null +++ b/zlt-doc/sql/tx_logger.sql @@ -0,0 +1,18 @@ +CREATE DATABASE IF NOT EXISTS `tx_logger` DEFAULT CHARACTER SET = utf8; +Use `tx_logger`; + +-- ---------------------------- +-- Table structure for t_logger +-- ---------------------------- +DROP TABLE IF EXISTS `t_logger`; +CREATE TABLE `t_logger` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `group_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `unit_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `tag` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `content` varchar(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `create_time` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + diff --git a/zlt-gateway/pom.xml b/zlt-gateway/pom.xml index 476921c..2a07961 100644 --- a/zlt-gateway/pom.xml +++ b/zlt-gateway/pom.xml @@ -4,7 +4,7 @@ com.zlt central-platform - 1.3.0 + 1.4.0 zlt-gateway pom diff --git a/zlt-gateway/spring-cloud-gateway/pom.xml b/zlt-gateway/spring-cloud-gateway/pom.xml index 7c2908f..c0aeb84 100644 --- a/zlt-gateway/spring-cloud-gateway/pom.xml +++ b/zlt-gateway/spring-cloud-gateway/pom.xml @@ -4,7 +4,7 @@ com.zlt zlt-gateway - 1.3.0 + 1.4.0 sc-gateway spring cloud gateway网关 diff --git a/zlt-gateway/zuul-gateway/pom.xml b/zlt-gateway/zuul-gateway/pom.xml index de92e43..d2ae3d7 100644 --- a/zlt-gateway/zuul-gateway/pom.xml +++ b/zlt-gateway/zuul-gateway/pom.xml @@ -4,7 +4,7 @@ com.zlt zlt-gateway - 1.3.0 + 1.4.0 zuul-gateway zuul网关 diff --git a/zlt-job/job-admin/pom.xml b/zlt-job/job-admin/pom.xml index 98f7444..f203008 100644 --- a/zlt-job/job-admin/pom.xml +++ b/zlt-job/job-admin/pom.xml @@ -4,7 +4,7 @@ com.zlt zlt-job - 1.3.0 + 1.4.0 job-admin jar diff --git a/zlt-job/job-core/pom.xml b/zlt-job/job-core/pom.xml index f4245d4..bbd3d96 100644 --- a/zlt-job/job-core/pom.xml +++ b/zlt-job/job-core/pom.xml @@ -4,7 +4,7 @@ com.zlt zlt-job - 1.3.0 + 1.4.0 job-core jar diff --git a/zlt-job/job-executor-samples/pom.xml b/zlt-job/job-executor-samples/pom.xml index 52b9c2f..b04f554 100644 --- a/zlt-job/job-executor-samples/pom.xml +++ b/zlt-job/job-executor-samples/pom.xml @@ -6,7 +6,7 @@ com.zlt zlt-job - 1.3.0 + 1.4.0 job-executor-samples jar diff --git a/zlt-job/pom.xml b/zlt-job/pom.xml index a1bd375..b8c6180 100644 --- a/zlt-job/pom.xml +++ b/zlt-job/pom.xml @@ -4,7 +4,7 @@ com.zlt central-platform - 1.3.0 + 1.4.0 zlt-job pom diff --git a/zlt-monitor/log-center/pom.xml b/zlt-monitor/log-center/pom.xml index ad225b8..5a2b446 100644 --- a/zlt-monitor/log-center/pom.xml +++ b/zlt-monitor/log-center/pom.xml @@ -4,7 +4,7 @@ com.zlt zlt-monitor - 1.3.0 + 1.4.0 log-center diff --git a/zlt-monitor/pom.xml b/zlt-monitor/pom.xml index ce8812a..bf439f3 100644 --- a/zlt-monitor/pom.xml +++ b/zlt-monitor/pom.xml @@ -3,7 +3,7 @@ com.zlt central-platform - 1.3.0 + 1.4.0 zlt-monitor pom diff --git a/zlt-monitor/sc-admin/pom.xml b/zlt-monitor/sc-admin/pom.xml index d9dbd6b..824c14e 100644 --- a/zlt-monitor/sc-admin/pom.xml +++ b/zlt-monitor/sc-admin/pom.xml @@ -4,7 +4,7 @@ com.zlt zlt-monitor - 1.3.0 + 1.4.0 sc-admin diff --git a/zlt-search/pom.xml b/zlt-search/pom.xml deleted file mode 100644 index 5267541..0000000 --- a/zlt-search/pom.xml +++ /dev/null @@ -1,11 +0,0 @@ - - 4.0.0 - - com.zlt - central-platform - 1.3.0 - - zlt-search - pom - - \ No newline at end of file diff --git a/zlt-transaction/pom.xml b/zlt-transaction/pom.xml new file mode 100644 index 0000000..0e1ecff --- /dev/null +++ b/zlt-transaction/pom.xml @@ -0,0 +1,17 @@ + + 4.0.0 + + com.zlt + central-platform + 1.4.0 + + zlt-transaction + 事务 + pom + + + + txlcn-tm + + \ No newline at end of file diff --git a/zlt-transaction/txlcn-tm/pom.xml b/zlt-transaction/txlcn-tm/pom.xml new file mode 100644 index 0000000..c1f206c --- /dev/null +++ b/zlt-transaction/txlcn-tm/pom.xml @@ -0,0 +1,79 @@ + + + com.zlt + zlt-transaction + 1.4.0 + + 4.0.0 + txlcn-tm + tx-lcn事务管理器 + + + com.zlt + zlt-config + + + org.springframework.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + com.zlt + zlt-log-spring-boot-starter + + + org.springframework.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + com.codingapi.txlcn + txlcn-tm + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + com.spotify + docker-maven-plugin + + ${docker.image.prefix}/${project.artifactId} + + ${project.version} + latest + + true + ${docker.baseImage} + ${docker.volumes} + + ${docker.java.opts} + + ["java ","$JAVA_OPTS ${docker.java.security.egd} ","-jar + ","/${project.build.finalName}.jar"] + + + + / + ${project.build.directory} + ${project.build.finalName}.jar + + + + + + ${project.artifactId} + + diff --git a/zlt-transaction/txlcn-tm/src/main/java/org/txlcn/tm/TransactionManagerApplication.java b/zlt-transaction/txlcn-tm/src/main/java/org/txlcn/tm/TransactionManagerApplication.java new file mode 100644 index 0000000..7085ac7 --- /dev/null +++ b/zlt-transaction/txlcn-tm/src/main/java/org/txlcn/tm/TransactionManagerApplication.java @@ -0,0 +1,18 @@ +package org.txlcn.tm; + +import com.codingapi.txlcn.tm.config.EnableTransactionManagerServer; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +/** + * @author zlt + */ +@SpringBootApplication +@EnableDiscoveryClient +@EnableTransactionManagerServer +public class TransactionManagerApplication { + public static void main(String[] args) { + SpringApplication.run(TransactionManagerApplication.class, args); + } +} diff --git a/zlt-transaction/txlcn-tm/src/main/resources/application.properties b/zlt-transaction/txlcn-tm/src/main/resources/application.properties new file mode 100644 index 0000000..1f0656f --- /dev/null +++ b/zlt-transaction/txlcn-tm/src/main/resources/application.properties @@ -0,0 +1,28 @@ +################## +# 你可以在 https://txlcn.org/zh-cn/docs/setting/manager.html 看到所有的个性化配置 +################# +spring.profiles.active=dev + +spring.datasource.driver-class-name=com.mysql.jdbc.Driver +spring.datasource.url=jdbc:mysql://${zlt.datasource.ip}:3306/tx-manager?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull +spring.datasource.username=${zlt.datasource.username} +spring.datasource.password=${zlt.datasource.password} +spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect +spring.jpa.hibernate.ddl-auto=update + +tx-lcn.logger.enabled=true +tx-lcn.logger.driver-class-name=com.mysql.jdbc.Driver +tx-lcn.logger.jdbc-url=jdbc:mysql://${zlt.datasource.ip}:3306/tx_logger?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull +tx-lcn.logger.username=${zlt.datasource.username} +tx-lcn.logger.password=${zlt.datasource.password} + +# redis 的设置信息. 线上请用Redis Cluster +spring.redis.host=${zlt.redis.host} +spring.redis.port=${zlt.redis.port} +spring.redis.password= + +# TM后台登陆密码,默认值为codingapi +tx-lcn.manager.admin-key=admin + +# 分布式事务执行总时间(ms). 默认为8000 +tx-lcn.manager.dtx-time=15000 \ No newline at end of file diff --git a/zlt-transaction/txlcn-tm/src/main/resources/bootstrap.properties b/zlt-transaction/txlcn-tm/src/main/resources/bootstrap.properties new file mode 100644 index 0000000..3a5c8fa --- /dev/null +++ b/zlt-transaction/txlcn-tm/src/main/resources/bootstrap.properties @@ -0,0 +1,5 @@ +spring.application.name=TX-Manager +server.port=7970 + +zlt.nacos.server-addr=192.168.28.130:8848 +spring.cloud.nacos.discovery.server-addr=${zlt.nacos.server-addr} \ No newline at end of file diff --git a/zlt-uaa/pom.xml b/zlt-uaa/pom.xml index 05be50c..3418cdf 100644 --- a/zlt-uaa/pom.xml +++ b/zlt-uaa/pom.xml @@ -4,7 +4,7 @@ com.zlt central-platform - 1.3.0 + 1.4.0 zlt-uaa 认证中心 diff --git a/zlt-web/back-web/pom.xml b/zlt-web/back-web/pom.xml index cbdeb30..b284ff0 100644 --- a/zlt-web/back-web/pom.xml +++ b/zlt-web/back-web/pom.xml @@ -6,7 +6,7 @@ com.zlt zlt-web - 1.3.0 + 1.4.0 back-web 后台管理前端 diff --git a/zlt-web/back-web/src/main/java/com/central/web/BackWebApplication.java b/zlt-web/back-web/src/main/java/com/central/web/BackWebApplication.java index f1abb2a..7bee83b 100644 --- a/zlt-web/back-web/src/main/java/com/central/web/BackWebApplication.java +++ b/zlt-web/back-web/src/main/java/com/central/web/BackWebApplication.java @@ -2,12 +2,10 @@ package com.central.web; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.Configuration; /** * @author zlt */ -@Configuration @SpringBootApplication public class BackWebApplication { public static void main(String[] args) { diff --git a/zlt-web/pom.xml b/zlt-web/pom.xml index 1cd406b..b26dfd1 100644 --- a/zlt-web/pom.xml +++ b/zlt-web/pom.xml @@ -6,12 +6,12 @@ com.zlt central-platform - 1.3.0 + 1.4.0 zlt-web 前端 pom - - back-web - + + back-web + -- GitLab