Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
holden_csdn
tx-lcn
提交
010af393
T
tx-lcn
项目概览
holden_csdn
/
tx-lcn
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
tx-lcn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
010af393
编写于
1月 13, 2019
作者:
U
ujued
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
5.0.0.RC1
上级
533486e9
变更
53
隐藏空白更改
内联
并排
Showing
53 changed file
with
171 addition
and
67 deletion
+171
-67
README.md
README.md
+1
-1
docs/docs/en-us/demo/dubbo.md
docs/docs/en-us/demo/dubbo.md
+1
-1
docs/docs/en-us/demo/springcloud.md
docs/docs/en-us/demo/springcloud.md
+3
-3
docs/docs/en-us/expansion/rpc.md
docs/docs/en-us/expansion/rpc.md
+1
-1
docs/docs/en-us/start.md
docs/docs/en-us/start.md
+2
-2
docs/docs/zh-cn/demo/dubbo.md
docs/docs/zh-cn/demo/dubbo.md
+1
-1
docs/docs/zh-cn/demo/springcloud.md
docs/docs/zh-cn/demo/springcloud.md
+3
-3
docs/docs/zh-cn/expansion/rpc.md
docs/docs/zh-cn/expansion/rpc.md
+1
-1
docs/docs/zh-cn/start.md
docs/docs/zh-cn/start.md
+2
-2
docs/en-us/docs/demo/dubbo.html
docs/en-us/docs/demo/dubbo.html
+1
-1
docs/en-us/docs/demo/dubbo.json
docs/en-us/docs/demo/dubbo.json
+1
-1
docs/en-us/docs/demo/springcloud.html
docs/en-us/docs/demo/springcloud.html
+3
-3
docs/en-us/docs/demo/springcloud.json
docs/en-us/docs/demo/springcloud.json
+1
-1
docs/en-us/docs/expansion/rpc.html
docs/en-us/docs/expansion/rpc.html
+1
-1
docs/en-us/docs/expansion/rpc.json
docs/en-us/docs/expansion/rpc.json
+1
-1
docs/en-us/docs/start.html
docs/en-us/docs/start.html
+2
-2
docs/en-us/docs/start.json
docs/en-us/docs/start.json
+1
-1
docs/zh-cn/docs/demo/dubbo.html
docs/zh-cn/docs/demo/dubbo.html
+1
-1
docs/zh-cn/docs/demo/dubbo.json
docs/zh-cn/docs/demo/dubbo.json
+1
-1
docs/zh-cn/docs/demo/springcloud.html
docs/zh-cn/docs/demo/springcloud.html
+3
-3
docs/zh-cn/docs/demo/springcloud.json
docs/zh-cn/docs/demo/springcloud.json
+1
-1
docs/zh-cn/docs/expansion/rpc.html
docs/zh-cn/docs/expansion/rpc.html
+1
-1
docs/zh-cn/docs/expansion/rpc.json
docs/zh-cn/docs/expansion/rpc.json
+1
-1
docs/zh-cn/docs/start.html
docs/zh-cn/docs/start.html
+2
-2
docs/zh-cn/docs/start.json
docs/zh-cn/docs/start.json
+1
-1
example/demo-common/pom.xml
example/demo-common/pom.xml
+1
-1
example/dubbo-demo-client/pom.xml
example/dubbo-demo-client/pom.xml
+1
-1
example/dubbo-demo-d/pom.xml
example/dubbo-demo-d/pom.xml
+1
-1
example/dubbo-demo-e/pom.xml
example/dubbo-demo-e/pom.xml
+1
-1
example/spring-demo-client/pom.xml
example/spring-demo-client/pom.xml
+2
-2
example/spring-demo-d/pom.xml
example/spring-demo-d/pom.xml
+1
-1
example/spring-demo-e/pom.xml
example/spring-demo-e/pom.xml
+1
-1
pom.xml
pom.xml
+2
-2
tx-client-dubbo/pom.xml
tx-client-dubbo/pom.xml
+1
-1
tx-client-springcloud/pom.xml
tx-client-springcloud/pom.xml
+1
-1
tx-client/pom.xml
tx-client/pom.xml
+1
-1
tx-client/src/main/java/com/codingapi/tx/client/aspect/interceptor/DTXInterceptor.java
...odingapi/tx/client/aspect/interceptor/DTXInterceptor.java
+29
-0
tx-client/src/main/java/com/codingapi/tx/client/aspect/interceptor/InterceptorInvocationUtils.java
...client/aspect/interceptor/InterceptorInvocationUtils.java
+52
-0
tx-client/src/main/java/com/codingapi/tx/client/aspect/interceptor/TXLCNInterceptor.java
...ingapi/tx/client/aspect/interceptor/TXLCNInterceptor.java
+27
-0
tx-client/src/main/java/com/codingapi/tx/client/bean/DTXInfo.java
...t/src/main/java/com/codingapi/tx/client/bean/DTXInfo.java
+1
-0
tx-client/src/main/java/com/codingapi/tx/client/spi/transaction/txc/control/TxcDefaultTransaction.java
...nt/spi/transaction/txc/control/TxcDefaultTransaction.java
+3
-0
tx-client/src/main/resources/banner.txt
tx-client/src/main/resources/banner.txt
+1
-1
tx-commons/pom.xml
tx-commons/pom.xml
+1
-1
tx-commons/src/main/java/com/codingapi/tx/commons/annotation/LcnTransaction.java
...a/com/codingapi/tx/commons/annotation/LcnTransaction.java
+0
-3
tx-commons/src/main/java/com/codingapi/tx/commons/annotation/TccTransaction.java
...a/com/codingapi/tx/commons/annotation/TccTransaction.java
+0
-3
tx-commons/src/main/java/com/codingapi/tx/commons/annotation/TxTransaction.java
...va/com/codingapi/tx/commons/annotation/TxTransaction.java
+0
-2
tx-jdbcproxy-p6spy/pom.xml
tx-jdbcproxy-p6spy/pom.xml
+1
-1
tx-logger/pom.xml
tx-logger/pom.xml
+1
-1
tx-manager/pom.xml
tx-manager/pom.xml
+1
-1
tx-manager/src/main/resources/banner.txt
tx-manager/src/main/resources/banner.txt
+1
-1
tx-spi-message-netty/pom.xml
tx-spi-message-netty/pom.xml
+1
-1
tx-spi-message/pom.xml
tx-spi-message/pom.xml
+1
-1
tx-spi-sleuth/pom.xml
tx-spi-sleuth/pom.xml
+1
-1
未找到文件。
README.md
浏览文件 @
010af393
# tx-lcn分布式事务框架 (5.0.0.
beta
)
# tx-lcn分布式事务框架 (5.0.0.
RC1
)
[
![Gitter
](
https://badges.gitter.im/codingapi/tx-lcn.svg
)
](https://gitter.im/codingapi/tx-lcn?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
## 项目介绍
5.
0完全拥抱springboot体系,JDK版本为1.8开发,将不仅仅支持LCN事务模式,也引入了TCC,TXC模式,同时把分布式事务协调的模式抽象出来,让各种模式可以嵌套使用。
...
...
docs/docs/en-us/demo/dubbo.md
浏览文件 @
010af393
...
...
@@ -129,7 +129,7 @@ spring.datasource.hikari.maximum-pool-size=20
mybatis.configuration.map-underscore-to-camel-case
=
true
mybatis.configuration.use-generated-keys
=
true
```
src:
[
https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/dubbo-demo-client
](
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/dubbo-demo-client
)
src:
[
https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/dubbo-demo-client
](
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/dubbo-demo-client
)
## 四、启动Dubbo微服务
(1) 事务参与方 D
...
...
docs/docs/en-us/demo/springcloud.md
浏览文件 @
010af393
...
...
@@ -18,7 +18,7 @@ mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.use-generated-keys
=
true
```
src:
[
https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/spring-demo-d
](
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/spring-demo-d
)
src:
[
https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/spring-demo-d
](
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/spring-demo-d
)
## 二、事务参与方E
(1)新建Maven 工程
...
...
@@ -38,7 +38,7 @@ mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.use-generated-keys
=
true
```
src:
[
https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/spring-demo-e
](
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/spring-demo-e
)
src:
[
https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/spring-demo-e
](
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/spring-demo-e
)
## 三、事务发起方Client
(1)新建Maven 工程
...
...
@@ -63,7 +63,7 @@ mybatis.configuration.use-generated-keys=true
ribbon.MaxAutoRetriesNextServer
=
0
```
src:
[
https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/spring-demo-client
](
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/spring-demo-client
)
src:
[
https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/spring-demo-client
](
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/spring-demo-client
)
## 四、启动SpringCloud微服务
(1) 事务参与方 D
...
...
docs/docs/en-us/expansion/rpc.md
浏览文件 @
010af393
...
...
@@ -98,7 +98,7 @@ public class RibbonFirstRestTemplateCustomizer implements RestTemplateCustomizer
<parent>
<artifactId>
tx-lcn
</artifactId>
<groupId>
com.codingapi.txlcn
</groupId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<packaging>
pom
</packaging>
...
...
docs/docs/en-us/start.md
浏览文件 @
010af393
...
...
@@ -7,7 +7,7 @@ springcloud pom
<dependency>
<groupId>
com.codingapi.txlcn
</groupId>
<artifactId>
tx-client-springcloud
</artifactId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</dependency>
```
dubbo pom
...
...
@@ -15,7 +15,7 @@ dubbo pom
<dependency>
<groupId>
com.codingapi.txlcn
</groupId>
<artifactId>
tx-client-dubbo
</artifactId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</dependency>
```
> `NOTE` 依微服务架构依赖其一
...
...
docs/docs/zh-cn/demo/dubbo.md
浏览文件 @
010af393
...
...
@@ -129,7 +129,7 @@ spring.datasource.hikari.maximum-pool-size=20
mybatis.configuration.map-underscore-to-camel-case
=
true
mybatis.configuration.use-generated-keys
=
true
```
src:
[
https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/dubbo-demo-client
](
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/dubbo-demo-client
)
src:
[
https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/dubbo-demo-client
](
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/dubbo-demo-client
)
## 四、启动Dubbo微服务
(1) 事务参与方 D
...
...
docs/docs/zh-cn/demo/springcloud.md
浏览文件 @
010af393
...
...
@@ -18,7 +18,7 @@ mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.use-generated-keys
=
true
```
src:
[
https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/spring-demo-d
](
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/spring-demo-d
)
src:
[
https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/spring-demo-d
](
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/spring-demo-d
)
## 二、事务参与方E
(1)新建Maven 工程
...
...
@@ -38,7 +38,7 @@ mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.use-generated-keys
=
true
```
src:
[
https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/spring-demo-e
](
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/spring-demo-e
)
src:
[
https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/spring-demo-e
](
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/spring-demo-e
)
## 三、事务发起方Client
(1)新建Maven 工程
...
...
@@ -63,7 +63,7 @@ mybatis.configuration.use-generated-keys=true
ribbon.MaxAutoRetriesNextServer
=
0
```
src:
[
https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/spring-demo-client
](
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/spring-demo-client
)
src:
[
https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/spring-demo-client
](
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/spring-demo-client
)
## 四、启动SpringCloud微服务
(1) 事务参与方 D
...
...
docs/docs/zh-cn/expansion/rpc.md
浏览文件 @
010af393
...
...
@@ -98,7 +98,7 @@ public class RibbonFirstRestTemplateCustomizer implements RestTemplateCustomizer
<parent>
<artifactId>
tx-lcn
</artifactId>
<groupId>
com.codingapi.txlcn
</groupId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<packaging>
pom
</packaging>
...
...
docs/docs/zh-cn/start.md
浏览文件 @
010af393
...
...
@@ -7,7 +7,7 @@ springcloud pom
<dependency>
<groupId>
com.codingapi.txlcn
</groupId>
<artifactId>
tx-client-springcloud
</artifactId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</dependency>
```
dubbo pom
...
...
@@ -15,7 +15,7 @@ dubbo pom
<dependency>
<groupId>
com.codingapi.txlcn
</groupId>
<artifactId>
tx-client-dubbo
</artifactId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</dependency>
```
> `NOTE` 依微服务架构依赖其一
...
...
docs/en-us/docs/demo/dubbo.html
浏览文件 @
010af393
...
...
@@ -137,7 +137,7 @@
<span
class=
"hljs-meta"
>
mybatis.configuration.map-underscore-to-camel-case
</span>
=
<span
class=
"hljs-string"
>
true
</span>
<span
class=
"hljs-meta"
>
mybatis.configuration.use-generated-keys
</span>
=
<span
class=
"hljs-string"
>
true
</span>
</code></pre>
<p>
src:
<a
href=
"https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/dubbo-demo-client"
>
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/dubbo-demo-client
</a></p>
<p>
src:
<a
href=
"https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/dubbo-demo-client"
>
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/dubbo-demo-client
</a></p>
<h2>
四、启动Dubbo微服务
</h2>
<p>
(1) 事务参与方 D
<br>
<img
src=
"img/dubbo-d.png"
alt=
"dubbo-d"
>
...
...
docs/en-us/docs/demo/dubbo.json
浏览文件 @
010af393
{
"filename"
:
"dubbo.md"
,
"__html"
:
"<h1>Dubbo示例</h1>
\n
<h2>一、事务参与方 D</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-d.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-comment
\"
># Spring boot application</span>
\n
<span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-d</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12005</span>
\n
<span class=
\"
hljs-meta
\"
>management.port</span>=<span class=
\"
hljs-string
\"
>12008</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Service version</span>
\n
<span class=
\"
hljs-meta
\"
>demo.service.version</span>=<span class=
\"
hljs-string
\"
>1.0.0</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Base packages to scan Dubbo Components (e.g @Service , @Reference)</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.scan.basePackages</span>=<span class=
\"
hljs-string
\"
>com.example</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Dubbo Config properties</span>
\n
<span class=
\"
hljs-comment
\"
>## ApplicationConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.id</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-d</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-d</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## ProtocolConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.id</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.name</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.port</span>=<span class=
\"
hljs-string
\"
>12345</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## RegistryConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.id</span>=<span class=
\"
hljs-string
\"
>my-registry</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.address</span>=<span class=
\"
hljs-string
\"
>127.0.0.1:2181</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.protocol</span>=<span class=
\"
hljs-string
\"
>zookeeper</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.qos.enable</span>=<span class=
\"
hljs-string
\"
>false</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## DB</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://127.0.0.1:3306/txlcn-demo
\\\n
?characterEncoding=UTF-8&serverTimezone=UTC</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
</code></pre>
\n
<p>src: <a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0-dev/example/dubbo-demo-d
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0/example/dubbo-demo-d</a></p>
\n
<h2>二、事务参与方 E</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-e.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-comment
\"
># Spring boot application</span>
\n
<span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-e</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12006</span>
\n
<span class=
\"
hljs-meta
\"
>management.port</span>=<span class=
\"
hljs-string
\"
>12009</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Service version</span>
\n
<span class=
\"
hljs-meta
\"
>demo.service.version</span>=<span class=
\"
hljs-string
\"
>1.0.0</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Base packages to scan Dubbo Components (e.g @Service , @Reference)</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.scan.basePackages</span>=<span class=
\"
hljs-string
\"
>com.example</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Dubbo Config properties</span>
\n
<span class=
\"
hljs-comment
\"
>## ApplicationConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.id</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-e</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-e</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## ProtocolConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.id</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.name</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.port</span>=<span class=
\"
hljs-string
\"
>12346</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## RegistryConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.id</span>=<span class=
\"
hljs-string
\"
>my-registry</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.address</span>=<span class=
\"
hljs-string
\"
>127.0.0.1:2181</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.protocol</span>=<span class=
\"
hljs-string
\"
>zookeeper</span>
\n\n
<span class=
\"
hljs-meta
\"
>dubbo.application.qos.enable</span>=<span class=
\"
hljs-string
\"
>false</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
#db</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://127.0.0.1:3306/txlcn-demo
\\\n
?characterEncoding=UTF-8&serverTimezone=UTC</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0-dev/example/dubbo-demo-e
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0/example/dubbo-demo-e</a></p>
\n
<h2>三、事务发起方 Client</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-comment
\"
># Spring boot application</span>
\n
<span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-client</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12004</span>
\n
<span class=
\"
hljs-meta
\"
>management.port</span>=<span class=
\"
hljs-string
\"
>12007</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Service Version</span>
\n
<span class=
\"
hljs-meta
\"
>demo.service.version</span>=<span class=
\"
hljs-string
\"
>1.0.0</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Dubbo Config properties</span>
\n
<span class=
\"
hljs-comment
\"
>## ApplicationConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.id</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-client</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-client</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.d</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-d</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.e</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-e</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## ProtocolConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.id</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.name</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.port</span>=<span class=
\"
hljs-string
\"
>12345</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.protocol</span>=<span class=
\"
hljs-string
\"
>zookeeper</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.address</span>=<span class=
\"
hljs-string
\"
>127.0.0.1:2181</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## db</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://127.0.0.1:3306/txlcn-demo
\\\n
?characterEncoding=UTF-8&serverTimezone=UTC</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/dubbo-demo-client
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/dubbo-demo-client</a></p>
\n
<h2>四、启动Dubbo微服务</h2>
\n
<p>(1) 事务参与方 D<br>
\n
<img src=
\"
img/dubbo-d.png
\"
alt=
\"
dubbo-d
\"
>
\n
(2) 事务参与方 E<br>
\n
<img src=
\"
img/dubbo-e.png
\"
alt=
\"
dubbo-e
\"
>
\n
(3) 事务发起方 Client<br>
\n
<img src=
\"
img/dubbo-client.png
\"
alt=
\"
dubbo-client
\"
></p>
\n
"
,
"__html"
:
"<h1>Dubbo示例</h1>
\n
<h2>一、事务参与方 D</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-d.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-comment
\"
># Spring boot application</span>
\n
<span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-d</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12005</span>
\n
<span class=
\"
hljs-meta
\"
>management.port</span>=<span class=
\"
hljs-string
\"
>12008</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Service version</span>
\n
<span class=
\"
hljs-meta
\"
>demo.service.version</span>=<span class=
\"
hljs-string
\"
>1.0.0</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Base packages to scan Dubbo Components (e.g @Service , @Reference)</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.scan.basePackages</span>=<span class=
\"
hljs-string
\"
>com.example</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Dubbo Config properties</span>
\n
<span class=
\"
hljs-comment
\"
>## ApplicationConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.id</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-d</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-d</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## ProtocolConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.id</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.name</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.port</span>=<span class=
\"
hljs-string
\"
>12345</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## RegistryConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.id</span>=<span class=
\"
hljs-string
\"
>my-registry</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.address</span>=<span class=
\"
hljs-string
\"
>127.0.0.1:2181</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.protocol</span>=<span class=
\"
hljs-string
\"
>zookeeper</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.qos.enable</span>=<span class=
\"
hljs-string
\"
>false</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## DB</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://127.0.0.1:3306/txlcn-demo
\\\n
?characterEncoding=UTF-8&serverTimezone=UTC</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
</code></pre>
\n
<p>src: <a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0-dev/example/dubbo-demo-d
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0/example/dubbo-demo-d</a></p>
\n
<h2>二、事务参与方 E</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-e.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-comment
\"
># Spring boot application</span>
\n
<span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-e</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12006</span>
\n
<span class=
\"
hljs-meta
\"
>management.port</span>=<span class=
\"
hljs-string
\"
>12009</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Service version</span>
\n
<span class=
\"
hljs-meta
\"
>demo.service.version</span>=<span class=
\"
hljs-string
\"
>1.0.0</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Base packages to scan Dubbo Components (e.g @Service , @Reference)</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.scan.basePackages</span>=<span class=
\"
hljs-string
\"
>com.example</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Dubbo Config properties</span>
\n
<span class=
\"
hljs-comment
\"
>## ApplicationConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.id</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-e</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-e</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## ProtocolConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.id</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.name</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.port</span>=<span class=
\"
hljs-string
\"
>12346</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## RegistryConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.id</span>=<span class=
\"
hljs-string
\"
>my-registry</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.address</span>=<span class=
\"
hljs-string
\"
>127.0.0.1:2181</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.protocol</span>=<span class=
\"
hljs-string
\"
>zookeeper</span>
\n\n
<span class=
\"
hljs-meta
\"
>dubbo.application.qos.enable</span>=<span class=
\"
hljs-string
\"
>false</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
#db</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://127.0.0.1:3306/txlcn-demo
\\\n
?characterEncoding=UTF-8&serverTimezone=UTC</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0-dev/example/dubbo-demo-e
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0/example/dubbo-demo-e</a></p>
\n
<h2>三、事务发起方 Client</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-comment
\"
># Spring boot application</span>
\n
<span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-client</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12004</span>
\n
<span class=
\"
hljs-meta
\"
>management.port</span>=<span class=
\"
hljs-string
\"
>12007</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Service Version</span>
\n
<span class=
\"
hljs-meta
\"
>demo.service.version</span>=<span class=
\"
hljs-string
\"
>1.0.0</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Dubbo Config properties</span>
\n
<span class=
\"
hljs-comment
\"
>## ApplicationConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.id</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-client</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-client</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.d</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-d</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.e</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-e</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## ProtocolConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.id</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.name</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.port</span>=<span class=
\"
hljs-string
\"
>12345</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.protocol</span>=<span class=
\"
hljs-string
\"
>zookeeper</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.address</span>=<span class=
\"
hljs-string
\"
>127.0.0.1:2181</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## db</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://127.0.0.1:3306/txlcn-demo
\\\n
?characterEncoding=UTF-8&serverTimezone=UTC</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/dubbo-demo-client
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/dubbo-demo-client</a></p>
\n
<h2>四、启动Dubbo微服务</h2>
\n
<p>(1) 事务参与方 D<br>
\n
<img src=
\"
img/dubbo-d.png
\"
alt=
\"
dubbo-d
\"
>
\n
(2) 事务参与方 E<br>
\n
<img src=
\"
img/dubbo-e.png
\"
alt=
\"
dubbo-e
\"
>
\n
(3) 事务发起方 Client<br>
\n
<img src=
\"
img/dubbo-client.png
\"
alt=
\"
dubbo-client
\"
></p>
\n
"
,
"link"
:
"/en-us/docs/demo/dubbo.html"
,
"meta"
:
{}
}
\ No newline at end of file
docs/en-us/docs/demo/springcloud.html
浏览文件 @
010af393
...
...
@@ -30,7 +30,7 @@
<span
class=
"hljs-meta"
>
mybatis.configuration.use-generated-keys
</span>
=
<span
class=
"hljs-string"
>
true
</span>
</code></pre>
<p>
src:
<a
href=
"https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/spring-demo-d"
>
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/spring-demo-d
</a></p>
<p>
src:
<a
href=
"https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/spring-demo-d"
>
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/spring-demo-d
</a></p>
<h2>
二、事务参与方E
</h2>
<p>
(1)新建Maven 工程
<br>
<img
src=
"img/maven-se.png"
alt=
"maven project"
><br>
...
...
@@ -48,7 +48,7 @@
<span
class=
"hljs-meta"
>
mybatis.configuration.use-generated-keys
</span>
=
<span
class=
"hljs-string"
>
true
</span>
</code></pre>
<p>
src:
<a
href=
"https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/spring-demo-e"
>
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/spring-demo-e
</a></p>
<p>
src:
<a
href=
"https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/spring-demo-e"
>
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/spring-demo-e
</a></p>
<h2>
三、事务发起方Client
</h2>
<p>
(1)新建Maven 工程
<br>
<img
src=
"img/maven-s.png"
alt=
"maven project"
><br>
...
...
@@ -71,7 +71,7 @@
<span
class=
"hljs-meta"
>
ribbon.MaxAutoRetriesNextServer
</span>
=
<span
class=
"hljs-string"
>
0
</span>
</code></pre>
<p>
src:
<a
href=
"https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/spring-demo-client"
>
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/spring-demo-client
</a></p>
<p>
src:
<a
href=
"https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/spring-demo-client"
>
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/spring-demo-client
</a></p>
<h2>
四、启动SpringCloud微服务
</h2>
<p>
(1) 事务参与方 D
<br>
<img
src=
"img/spring-d.png"
alt=
"spring-d"
>
...
...
docs/en-us/docs/demo/springcloud.json
浏览文件 @
010af393
{
"filename"
:
"springcloud.md"
,
"__html"
:
"<h1>SpringCloud示例</h1>
\n
<h2>一、事务参与方D</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-sd.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>spring-demo-d</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12002</span>
\n\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://ip:port/txlcn-demo?characterEncoding=UTF-8</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/spring-demo-d
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0.beta/example/spring-demo-d</a></p>
\n
<h2>二、事务参与方E</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-se.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>spring-demo-e</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12003</span>
\n\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://ip:port/txlcn-demo?characterEncoding=UTF-8</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta/example/spring-demo-e
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0.beta/example/spring-demo-e</a></p>
\n
<h2>三、事务发起方Client</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-s.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>spring-demo-client</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12001</span>
\n\n\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://ip:port/txlcn-demo?characterEncoding=UTF-8</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-comment
\"
>
\n\n
# 关闭Ribbon的重试机制</span>
\n
<span class=
\"
hljs-meta
\"
>ribbon.MaxAutoRetriesNextServer</span>=<span class=
\"
hljs-string
\"
>0</span>
\n\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta/example/spring-demo-client
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/spring-demo-client</a></p>
\n
<h2>四、启动SpringCloud微服务</h2>
\n
<p>(1) 事务参与方 D<br>
\n
<img src=
\"
img/spring-d.png
\"
alt=
\"
spring-d
\"
>
\n
(2) 事务参与方 E<br>
\n
<img src=
\"
img/spring-e.png
\"
alt=
\"
spring-e
\"
>
\n
(3) 事务发起方 Client<br>
\n
<img src=
\"
img/spring-client.png
\"
alt=
\"
spring-client
\"
></p>
\n
"
,
"__html"
:
"<h1>SpringCloud示例</h1>
\n
<h2>一、事务参与方D</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-sd.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>spring-demo-d</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12002</span>
\n\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://ip:port/txlcn-demo?characterEncoding=UTF-8</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/spring-demo-d
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1/example/spring-demo-d</a></p>
\n
<h2>二、事务参与方E</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-se.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>spring-demo-e</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12003</span>
\n\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://ip:port/txlcn-demo?characterEncoding=UTF-8</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1/example/spring-demo-e
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1/example/spring-demo-e</a></p>
\n
<h2>三、事务发起方Client</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-s.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>spring-demo-client</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12001</span>
\n\n\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://ip:port/txlcn-demo?characterEncoding=UTF-8</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-comment
\"
>
\n\n
# 关闭Ribbon的重试机制</span>
\n
<span class=
\"
hljs-meta
\"
>ribbon.MaxAutoRetriesNextServer</span>=<span class=
\"
hljs-string
\"
>0</span>
\n\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1/example/spring-demo-client
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/spring-demo-client</a></p>
\n
<h2>四、启动SpringCloud微服务</h2>
\n
<p>(1) 事务参与方 D<br>
\n
<img src=
\"
img/spring-d.png
\"
alt=
\"
spring-d
\"
>
\n
(2) 事务参与方 E<br>
\n
<img src=
\"
img/spring-e.png
\"
alt=
\"
spring-e
\"
>
\n
(3) 事务发起方 Client<br>
\n
<img src=
\"
img/spring-client.png
\"
alt=
\"
spring-client
\"
></p>
\n
"
,
"link"
:
"/en-us/docs/demo/springcloud.html"
,
"meta"
:
{}
}
\ No newline at end of file
docs/en-us/docs/expansion/rpc.html
浏览文件 @
010af393
...
...
@@ -99,7 +99,7 @@ public class RibbonFirstRestTemplateCustomizer implements RestTemplateCustomizer
<
parent
>
<
artifactId
>
tx-lcn
<
/artifactId
>
<
groupId
>
com.codingapi.txlcn
<
/groupId
>
<
version
>
5.0.0.
beta
<
/version
>
<
version
>
5.0.0.
RC1
<
/version
>
<
/parent
>
<
modelVersion
>
4.0.0
<
/modelVersion
>
<
packaging
>
pom
<
/packaging
>
...
...
docs/en-us/docs/expansion/rpc.json
浏览文件 @
010af393
{
"filename"
:
"rpc.md"
,
"__html"
:
"<h1>RPC框架扩展</h1>
\n
<p>为了方便说明以springcloud框架为例说明如何扩展第三方RPC框架。</p>
\n
<ol>
\n
<li>增加tx-spi-sleuth的扩展实现。</li>
\n
</ol>
\n
<p>关于sleuth 参考 <a href=
\"
https://cloud.spring.io/spring-cloud-sleuth/2.0.x/single/spring-cloud-sleuth.html
\"
>https://cloud.spring.io/spring-cloud-sleuth/2.0.x/single/spring-cloud-sleuth.html</a></p>
\n
<p>tx-spi-sleuth的扩展主要控制:重写负载机制、sleuth参数传递</p>
\n
<p>关于srpingcloud的负载机制扩展:</p>
\n
<p>srpingcloud的负载机制是基于ribbon,关于ribbon原理请参考
\n
关于ZoneAvoidanceRule的参考 <a href=
\"
https://cloud.spring.io/spring-cloud-netflix/2.0.x/single/spring-cloud-netflix.html
\"
>https://cloud.spring.io/spring-cloud-netflix/2.0.x/single/spring-cloud-netflix.html</a></p>
\n
<pre><code>@Slf4j
\n
@Scope("prototype")
\n
public class TXLCNZoneAvoidanceRule extends ZoneAvoidanceRule {
\n\n
//针对sleuth 负载控制的ExtraField参数设置
\n
private final SleuthParamListener sleuthParamListener;
\n\n
private final Registration registration;
\n\n
public TXLCNZoneAvoidanceRule(SleuthParamListener sleuthParamListener,
\n
Registration registration) {
\n
this.sleuthParamListener = sleuthParamListener;
\n
this.registration = registration;
\n
}
\n\n
@Override
\n
public Server choose(Object key) {
\n
return getServer(key);
\n
}
\n\n
private Server getServer(Object key) {
\n
String localKey = String.format("%s:%s:%s", registration.getServiceId(), registration.getHost(), registration.getPort());
\n
List<String> appList = sleuthParamListener.beforeBalance(localKey);
\n
Server balanceServer = null;
\n
List<Server> servers = getLoadBalancer().getAllServers();
\n
log.debug("load balanced rule servers: {}", servers);
\n
for (Server server : servers) {
\n
for (String appKey : appList) {
\n
String serverKey = String.format("%s:%s", server.getMetaInfo().getAppName(), server.getHostPort());
\n
if (serverKey.equals(appKey)) {
\n
balanceServer = server;
\n
}
\n
}
\n
}
\n
if (balanceServer == null) {
\n
Server server = super.choose(key);
\n
sleuthParamListener.alfterNewBalance(String.format("%s:%s", server.getMetaInfo().getAppName(), server.getHostPort()));
\n
return server;
\n
} else {
\n
return balanceServer;
\n
}
\n
}
\n\n
}
\n
</code></pre>
\n
<p>关于srpingcloud的sleuth参数传递扩展:</p>
\n
<p>由于ribbon与sleuth都是基于ClientHttpRequestInterceptor来控制的,但ribbon的拦截器的order小于sleuth,特此处理一下顺序。</p>
\n
<pre><code>@Component
\n
public class RibbonFirstRestTemplateCustomizer implements RestTemplateCustomizer {
\n\n\n
private LoadBalancerInterceptor loadBalancerInterceptor;
\n\n
@Autowired
\n
public RibbonFirstRestTemplateCustomizer(LoadBalancerInterceptor loadBalancerInterceptor) {
\n
this.loadBalancerInterceptor = loadBalancerInterceptor;
\n
}
\n\n
@Override
\n
public void customize(RestTemplate restTemplate) {
\n
List<ClientHttpRequestInterceptor> list = new ArrayList<>(restTemplate.getInterceptors());
\n
list.add(0,loadBalancerInterceptor);
\n
restTemplate.setInterceptors(list);
\n
}
\n\n
}
\n
</code></pre>
\n
<ol start=
\"
2
\"
>
\n
<li>提供client端的pom。例如tx-client-springcloud:</li>
\n
</ol>
\n
<pre><code><?xml version="1.0" encoding="UTF-8"?>
\n
<project xmlns="http://maven.apache.org/POM/4.0.0"
\n
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
\n
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
\n
<parent>
\n
<artifactId>tx-lcn</artifactId>
\n
<groupId>com.codingapi.txlcn</groupId>
\n
<version>5.0.0.
beta
</version>
\n
</parent>
\n
<modelVersion>4.0.0</modelVersion>
\n
<packaging>pom</packaging>
\n
<artifactId>tx-client-springcloud</artifactId>
\n\n\n
<dependencies>
\n\n
<dependency>
\n
<groupId>com.codingapi.txlcn</groupId>
\n
<artifactId>tx-client</artifactId>
\n
</dependency>
\n\n
<dependency>
\n
<groupId>com.codingapi.txlcn</groupId>
\n
<artifactId>tx-spi-sleuth-springcloud</artifactId>
\n
</dependency>
\n\n
</dependencies>
\n\n
</project>
\n\n
</code></pre>
\n
"
,
"__html"
:
"<h1>RPC框架扩展</h1>
\n
<p>为了方便说明以springcloud框架为例说明如何扩展第三方RPC框架。</p>
\n
<ol>
\n
<li>增加tx-spi-sleuth的扩展实现。</li>
\n
</ol>
\n
<p>关于sleuth 参考 <a href=
\"
https://cloud.spring.io/spring-cloud-sleuth/2.0.x/single/spring-cloud-sleuth.html
\"
>https://cloud.spring.io/spring-cloud-sleuth/2.0.x/single/spring-cloud-sleuth.html</a></p>
\n
<p>tx-spi-sleuth的扩展主要控制:重写负载机制、sleuth参数传递</p>
\n
<p>关于srpingcloud的负载机制扩展:</p>
\n
<p>srpingcloud的负载机制是基于ribbon,关于ribbon原理请参考
\n
关于ZoneAvoidanceRule的参考 <a href=
\"
https://cloud.spring.io/spring-cloud-netflix/2.0.x/single/spring-cloud-netflix.html
\"
>https://cloud.spring.io/spring-cloud-netflix/2.0.x/single/spring-cloud-netflix.html</a></p>
\n
<pre><code>@Slf4j
\n
@Scope("prototype")
\n
public class TXLCNZoneAvoidanceRule extends ZoneAvoidanceRule {
\n\n
//针对sleuth 负载控制的ExtraField参数设置
\n
private final SleuthParamListener sleuthParamListener;
\n\n
private final Registration registration;
\n\n
public TXLCNZoneAvoidanceRule(SleuthParamListener sleuthParamListener,
\n
Registration registration) {
\n
this.sleuthParamListener = sleuthParamListener;
\n
this.registration = registration;
\n
}
\n\n
@Override
\n
public Server choose(Object key) {
\n
return getServer(key);
\n
}
\n\n
private Server getServer(Object key) {
\n
String localKey = String.format("%s:%s:%s", registration.getServiceId(), registration.getHost(), registration.getPort());
\n
List<String> appList = sleuthParamListener.beforeBalance(localKey);
\n
Server balanceServer = null;
\n
List<Server> servers = getLoadBalancer().getAllServers();
\n
log.debug("load balanced rule servers: {}", servers);
\n
for (Server server : servers) {
\n
for (String appKey : appList) {
\n
String serverKey = String.format("%s:%s", server.getMetaInfo().getAppName(), server.getHostPort());
\n
if (serverKey.equals(appKey)) {
\n
balanceServer = server;
\n
}
\n
}
\n
}
\n
if (balanceServer == null) {
\n
Server server = super.choose(key);
\n
sleuthParamListener.alfterNewBalance(String.format("%s:%s", server.getMetaInfo().getAppName(), server.getHostPort()));
\n
return server;
\n
} else {
\n
return balanceServer;
\n
}
\n
}
\n\n
}
\n
</code></pre>
\n
<p>关于srpingcloud的sleuth参数传递扩展:</p>
\n
<p>由于ribbon与sleuth都是基于ClientHttpRequestInterceptor来控制的,但ribbon的拦截器的order小于sleuth,特此处理一下顺序。</p>
\n
<pre><code>@Component
\n
public class RibbonFirstRestTemplateCustomizer implements RestTemplateCustomizer {
\n\n\n
private LoadBalancerInterceptor loadBalancerInterceptor;
\n\n
@Autowired
\n
public RibbonFirstRestTemplateCustomizer(LoadBalancerInterceptor loadBalancerInterceptor) {
\n
this.loadBalancerInterceptor = loadBalancerInterceptor;
\n
}
\n\n
@Override
\n
public void customize(RestTemplate restTemplate) {
\n
List<ClientHttpRequestInterceptor> list = new ArrayList<>(restTemplate.getInterceptors());
\n
list.add(0,loadBalancerInterceptor);
\n
restTemplate.setInterceptors(list);
\n
}
\n\n
}
\n
</code></pre>
\n
<ol start=
\"
2
\"
>
\n
<li>提供client端的pom。例如tx-client-springcloud:</li>
\n
</ol>
\n
<pre><code><?xml version="1.0" encoding="UTF-8"?>
\n
<project xmlns="http://maven.apache.org/POM/4.0.0"
\n
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
\n
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
\n
<parent>
\n
<artifactId>tx-lcn</artifactId>
\n
<groupId>com.codingapi.txlcn</groupId>
\n
<version>5.0.0.
RC1
</version>
\n
</parent>
\n
<modelVersion>4.0.0</modelVersion>
\n
<packaging>pom</packaging>
\n
<artifactId>tx-client-springcloud</artifactId>
\n\n\n
<dependencies>
\n\n
<dependency>
\n
<groupId>com.codingapi.txlcn</groupId>
\n
<artifactId>tx-client</artifactId>
\n
</dependency>
\n\n
<dependency>
\n
<groupId>com.codingapi.txlcn</groupId>
\n
<artifactId>tx-spi-sleuth-springcloud</artifactId>
\n
</dependency>
\n\n
</dependencies>
\n\n
</project>
\n\n
</code></pre>
\n
"
,
"link"
:
"/en-us/docs/expansion/rpc.html"
,
"meta"
:
{}
}
\ No newline at end of file
docs/en-us/docs/start.html
浏览文件 @
010af393
...
...
@@ -18,14 +18,14 @@
<pre><code
class=
"language-xml"
><span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
dependency
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
groupId
</span>
>
</span>
com.codingapi.txlcn
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
groupId
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
artifactId
</span>
>
</span>
tx-client-springcloud
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
artifactId
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
version
</span>
>
</span>
5.0.0.
beta
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
version
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
version
</span>
>
</span>
5.0.0.
RC1
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
version
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
dependency
</span>
>
</span>
</code></pre>
<p>
dubbo pom
</p>
<pre><code
class=
"language-xml"
><span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
dependency
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
groupId
</span>
>
</span>
com.codingapi.txlcn
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
groupId
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
artifactId
</span>
>
</span>
tx-client-dubbo
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
artifactId
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
version
</span>
>
</span>
5.0.0.
beta
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
version
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
version
</span>
>
</span>
5.0.0.
RC1
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
version
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
dependency
</span>
>
</span>
</code></pre>
<blockquote>
...
...
docs/en-us/docs/start.json
浏览文件 @
010af393
{
"filename"
:
"start.md"
,
"__html"
:
"<h1>快速开始</h1>
\n
<h2>一、微服务额外依赖TX-LCN Client 代码库</h2>
\n
<p>springcloud pom</p>
\n
<pre><code class=
\"
language-xml
\"
><span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>dependency</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>groupId</span>></span>com.codingapi.txlcn<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>groupId</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>artifactId</span>></span>tx-client-springcloud<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>artifactId</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>version</span>></span>5.0.0.
beta<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>version</span>></span>
\n
<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>dependency</span>></span>
\n
</code></pre>
\n
<p>dubbo pom</p>
\n
<pre><code class=
\"
language-xml
\"
><span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>dependency</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>groupId</span>></span>com.codingapi.txlcn<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>groupId</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>artifactId</span>></span>tx-client-dubbo<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>artifactId</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>version</span>></span>5.0.0.beta
<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>version</span>></span>
\n
<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>dependency</span>></span>
\n
</code></pre>
\n
<blockquote>
\n
<p><code>NOTE</code> 依微服务架构依赖其一</p>
\n
</blockquote>
\n
<h2>二、微服务示例代码</h2>
\n
<p>ServiceA 事务发起方<br>
\n
ServiceB 事务参与方(被调方)<br>
\n
<code>ServiceA->ServiceB</code></p>
\n
<p>ServiceA调用ServiceB.rpc(String value)方法<br>
\n
<code>ServiceA=>ServiceB.rpc(String value)</code></p>
\n
<h3>(1) 微服务A</h3>
\n
<pre><code class=
\"
language-java
\"
><span class=
\"
hljs-comment
\"
>// Micro Service A. As DTX starter</span>
\n
<span class=
\"
hljs-meta
\"
>@Service</span>
\n
<span class=
\"
hljs-keyword
\"
>public</span> <span class=
\"
hljs-class
\"
><span class=
\"
hljs-keyword
\"
>class</span> <span class=
\"
hljs-title
\"
>ServiceA</span> </span>{
\n
\n
<span class=
\"
hljs-meta
\"
>@Autowired</span>
\n
<span class=
\"
hljs-keyword
\"
>private</span> ValueDao valueDao;
\n
<span class=
\"
hljs-meta
\"
>@Autowired</span>
\n
<span class=
\"
hljs-keyword
\"
>private</span> ServiceB serviceB;
\n
\n
<span class=
\"
hljs-meta
\"
>@LcnTransaction</span>
\n
<span class=
\"
hljs-meta
\"
>@Transactional</span>
\n
<span class=
\"
hljs-function
\"
><span class=
\"
hljs-keyword
\"
>public</span> String <span class=
\"
hljs-title
\"
>execute</span><span class=
\"
hljs-params
\"
>(String value)</span> <span class=
\"
hljs-keyword
\"
>throws</span> BusinessException </span>{
\n
<span class=
\"
hljs-comment
\"
>// step1. call remote service B</span>
\n
String result = serviceB.rpc(value); <span class=
\"
hljs-comment
\"
>// (1)</span>
\n
<span class=
\"
hljs-comment
\"
>// step2. local store operate. DTX commit if save success, rollback if not.</span>
\n
valueDao.save(value); <span class=
\"
hljs-comment
\"
>// (2)</span>
\n
valueDao.saveBackup(value); <span class=
\"
hljs-comment
\"
>// (3)</span>
\n
<span class=
\"
hljs-keyword
\"
>return</span> result + <span class=
\"
hljs-string
\"
>
\"
>
\"
</span> + <span class=
\"
hljs-string
\"
>
\"
ok-A
\"
</span>;
\n
}
\n
}
\n
</code></pre>
\n
<h3>(2) 微服务B</h3>
\n
<pre><code class=
\"
language-java
\"
><span class=
\"
hljs-comment
\"
>// Micro Service D</span>
\n
<span class=
\"
hljs-meta
\"
>@Service</span>
\n
<span class=
\"
hljs-keyword
\"
>public</span> <span class=
\"
hljs-class
\"
><span class=
\"
hljs-keyword
\"
>class</span> <span class=
\"
hljs-title
\"
>ServiceB</span> </span>{
\n
<span class=
\"
hljs-meta
\"
>@Autowired</span>
\n
<span class=
\"
hljs-keyword
\"
>private</span> ValueDao valueDao;
\n
\n
<span class=
\"
hljs-meta
\"
>@LcnTransaction</span>
\n
<span class=
\"
hljs-meta
\"
>@Transactional</span>
\n
<span class=
\"
hljs-function
\"
><span class=
\"
hljs-keyword
\"
>public</span> String <span class=
\"
hljs-title
\"
>rpc</span><span class=
\"
hljs-params
\"
>(String value)</span> <span class=
\"
hljs-keyword
\"
>throws</span> BusinessException </span>{
\n
valueDao.save(value); <span class=
\"
hljs-comment
\"
>// (4)</span>
\n
valueDao.saveBackup(value); <span class=
\"
hljs-comment
\"
>// (5)</span>
\n
<span class=
\"
hljs-keyword
\"
>return</span> <span class=
\"
hljs-string
\"
>
\"
ok-B
\"
</span>;
\n
}
\n
}
\n
</code></pre>
\n
<p>(1) 服务A作为DTX发起方,远程调用服务B<br>
\n
(2)与(3) 构成A服务本地事务<br>
\n
(4)与(5) 构成B服务本地事务</p>
\n
<blockquote>
\n
<p><code>NOTES</code><br>
\n
1、@LcnTransaction
\n
标注事务单元用Lcn事务模式参与分布式事务<a href=
\"
principle/lcn.html
\"
>[原理]</a>。还有
\n
<a href=
\"
principle/txc.html
\"
>TXC</a> <a href=
\"
principle/tcc.html
\"
>TCC</a> 模式。<br>
\n
2、参数配置见 <a href=
\"
setting/client.html
\"
>TxClient配置</a><br>
\n
3、详细配置见 <a href=
\"
demo/dubbo.html
\"
>dubbo示例</a> <a href=
\"
demo/springcloud.html
\"
>springcloud示例</a></p>
\n
</blockquote>
\n
<h2>三、TxManager配置</h2>
\n
<p>配置TxManager参数并启动<br>
\n
参数配置见 <a href=
\"
setting/manager.html
\"
>TxManager配置</a></p>
\n
<hr>
\n
<p>至此,你已经开发好了一个简单的、支持分布式事务(DTX)的微服务系统</p>
\n
"
,
"__html"
:
"<h1>快速开始</h1>
\n
<h2>一、微服务额外依赖TX-LCN Client 代码库</h2>
\n
<p>springcloud pom</p>
\n
<pre><code class=
\"
language-xml
\"
><span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>dependency</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>groupId</span>></span>com.codingapi.txlcn<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>groupId</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>artifactId</span>></span>tx-client-springcloud<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>artifactId</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>version</span>></span>5.0.0.
RC1<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>version</span>></span>
\n
<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>dependency</span>></span>
\n
</code></pre>
\n
<p>dubbo pom</p>
\n
<pre><code class=
\"
language-xml
\"
><span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>dependency</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>groupId</span>></span>com.codingapi.txlcn<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>groupId</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>artifactId</span>></span>tx-client-dubbo<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>artifactId</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>version</span>></span>5.0.0.RC1
<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>version</span>></span>
\n
<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>dependency</span>></span>
\n
</code></pre>
\n
<blockquote>
\n
<p><code>NOTE</code> 依微服务架构依赖其一</p>
\n
</blockquote>
\n
<h2>二、微服务示例代码</h2>
\n
<p>ServiceA 事务发起方<br>
\n
ServiceB 事务参与方(被调方)<br>
\n
<code>ServiceA->ServiceB</code></p>
\n
<p>ServiceA调用ServiceB.rpc(String value)方法<br>
\n
<code>ServiceA=>ServiceB.rpc(String value)</code></p>
\n
<h3>(1) 微服务A</h3>
\n
<pre><code class=
\"
language-java
\"
><span class=
\"
hljs-comment
\"
>// Micro Service A. As DTX starter</span>
\n
<span class=
\"
hljs-meta
\"
>@Service</span>
\n
<span class=
\"
hljs-keyword
\"
>public</span> <span class=
\"
hljs-class
\"
><span class=
\"
hljs-keyword
\"
>class</span> <span class=
\"
hljs-title
\"
>ServiceA</span> </span>{
\n
\n
<span class=
\"
hljs-meta
\"
>@Autowired</span>
\n
<span class=
\"
hljs-keyword
\"
>private</span> ValueDao valueDao;
\n
<span class=
\"
hljs-meta
\"
>@Autowired</span>
\n
<span class=
\"
hljs-keyword
\"
>private</span> ServiceB serviceB;
\n
\n
<span class=
\"
hljs-meta
\"
>@LcnTransaction</span>
\n
<span class=
\"
hljs-meta
\"
>@Transactional</span>
\n
<span class=
\"
hljs-function
\"
><span class=
\"
hljs-keyword
\"
>public</span> String <span class=
\"
hljs-title
\"
>execute</span><span class=
\"
hljs-params
\"
>(String value)</span> <span class=
\"
hljs-keyword
\"
>throws</span> BusinessException </span>{
\n
<span class=
\"
hljs-comment
\"
>// step1. call remote service B</span>
\n
String result = serviceB.rpc(value); <span class=
\"
hljs-comment
\"
>// (1)</span>
\n
<span class=
\"
hljs-comment
\"
>// step2. local store operate. DTX commit if save success, rollback if not.</span>
\n
valueDao.save(value); <span class=
\"
hljs-comment
\"
>// (2)</span>
\n
valueDao.saveBackup(value); <span class=
\"
hljs-comment
\"
>// (3)</span>
\n
<span class=
\"
hljs-keyword
\"
>return</span> result + <span class=
\"
hljs-string
\"
>
\"
>
\"
</span> + <span class=
\"
hljs-string
\"
>
\"
ok-A
\"
</span>;
\n
}
\n
}
\n
</code></pre>
\n
<h3>(2) 微服务B</h3>
\n
<pre><code class=
\"
language-java
\"
><span class=
\"
hljs-comment
\"
>// Micro Service D</span>
\n
<span class=
\"
hljs-meta
\"
>@Service</span>
\n
<span class=
\"
hljs-keyword
\"
>public</span> <span class=
\"
hljs-class
\"
><span class=
\"
hljs-keyword
\"
>class</span> <span class=
\"
hljs-title
\"
>ServiceB</span> </span>{
\n
<span class=
\"
hljs-meta
\"
>@Autowired</span>
\n
<span class=
\"
hljs-keyword
\"
>private</span> ValueDao valueDao;
\n
\n
<span class=
\"
hljs-meta
\"
>@LcnTransaction</span>
\n
<span class=
\"
hljs-meta
\"
>@Transactional</span>
\n
<span class=
\"
hljs-function
\"
><span class=
\"
hljs-keyword
\"
>public</span> String <span class=
\"
hljs-title
\"
>rpc</span><span class=
\"
hljs-params
\"
>(String value)</span> <span class=
\"
hljs-keyword
\"
>throws</span> BusinessException </span>{
\n
valueDao.save(value); <span class=
\"
hljs-comment
\"
>// (4)</span>
\n
valueDao.saveBackup(value); <span class=
\"
hljs-comment
\"
>// (5)</span>
\n
<span class=
\"
hljs-keyword
\"
>return</span> <span class=
\"
hljs-string
\"
>
\"
ok-B
\"
</span>;
\n
}
\n
}
\n
</code></pre>
\n
<p>(1) 服务A作为DTX发起方,远程调用服务B<br>
\n
(2)与(3) 构成A服务本地事务<br>
\n
(4)与(5) 构成B服务本地事务</p>
\n
<blockquote>
\n
<p><code>NOTES</code><br>
\n
1、@LcnTransaction
\n
标注事务单元用Lcn事务模式参与分布式事务<a href=
\"
principle/lcn.html
\"
>[原理]</a>。还有
\n
<a href=
\"
principle/txc.html
\"
>TXC</a> <a href=
\"
principle/tcc.html
\"
>TCC</a> 模式。<br>
\n
2、参数配置见 <a href=
\"
setting/client.html
\"
>TxClient配置</a><br>
\n
3、详细配置见 <a href=
\"
demo/dubbo.html
\"
>dubbo示例</a> <a href=
\"
demo/springcloud.html
\"
>springcloud示例</a></p>
\n
</blockquote>
\n
<h2>三、TxManager配置</h2>
\n
<p>配置TxManager参数并启动<br>
\n
参数配置见 <a href=
\"
setting/manager.html
\"
>TxManager配置</a></p>
\n
<hr>
\n
<p>至此,你已经开发好了一个简单的、支持分布式事务(DTX)的微服务系统</p>
\n
"
,
"link"
:
"/en-us/docs/start.html"
,
"meta"
:
{}
}
\ No newline at end of file
docs/zh-cn/docs/demo/dubbo.html
浏览文件 @
010af393
...
...
@@ -137,7 +137,7 @@
<span
class=
"hljs-meta"
>
mybatis.configuration.map-underscore-to-camel-case
</span>
=
<span
class=
"hljs-string"
>
true
</span>
<span
class=
"hljs-meta"
>
mybatis.configuration.use-generated-keys
</span>
=
<span
class=
"hljs-string"
>
true
</span>
</code></pre>
<p>
src:
<a
href=
"https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/dubbo-demo-client"
>
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/dubbo-demo-client
</a></p>
<p>
src:
<a
href=
"https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/dubbo-demo-client"
>
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/dubbo-demo-client
</a></p>
<h2>
四、启动Dubbo微服务
</h2>
<p>
(1) 事务参与方 D
<br>
<img
src=
"img/dubbo-d.png"
alt=
"dubbo-d"
>
...
...
docs/zh-cn/docs/demo/dubbo.json
浏览文件 @
010af393
{
"filename"
:
"dubbo.md"
,
"__html"
:
"<h1>Dubbo示例</h1>
\n
<h2>一、事务参与方 D</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-d.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-comment
\"
># Spring boot application</span>
\n
<span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-d</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12005</span>
\n
<span class=
\"
hljs-meta
\"
>management.port</span>=<span class=
\"
hljs-string
\"
>12008</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Service version</span>
\n
<span class=
\"
hljs-meta
\"
>demo.service.version</span>=<span class=
\"
hljs-string
\"
>1.0.0</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Base packages to scan Dubbo Components (e.g @Service , @Reference)</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.scan.basePackages</span>=<span class=
\"
hljs-string
\"
>com.example</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Dubbo Config properties</span>
\n
<span class=
\"
hljs-comment
\"
>## ApplicationConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.id</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-d</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-d</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## ProtocolConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.id</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.name</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.port</span>=<span class=
\"
hljs-string
\"
>12345</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## RegistryConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.id</span>=<span class=
\"
hljs-string
\"
>my-registry</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.address</span>=<span class=
\"
hljs-string
\"
>127.0.0.1:2181</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.protocol</span>=<span class=
\"
hljs-string
\"
>zookeeper</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.qos.enable</span>=<span class=
\"
hljs-string
\"
>false</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## DB</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://127.0.0.1:3306/txlcn-demo
\\\n
?characterEncoding=UTF-8&serverTimezone=UTC</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
</code></pre>
\n
<p>src: <a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0-dev/example/dubbo-demo-d
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0/example/dubbo-demo-d</a></p>
\n
<h2>二、事务参与方 E</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-e.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-comment
\"
># Spring boot application</span>
\n
<span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-e</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12006</span>
\n
<span class=
\"
hljs-meta
\"
>management.port</span>=<span class=
\"
hljs-string
\"
>12009</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Service version</span>
\n
<span class=
\"
hljs-meta
\"
>demo.service.version</span>=<span class=
\"
hljs-string
\"
>1.0.0</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Base packages to scan Dubbo Components (e.g @Service , @Reference)</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.scan.basePackages</span>=<span class=
\"
hljs-string
\"
>com.example</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Dubbo Config properties</span>
\n
<span class=
\"
hljs-comment
\"
>## ApplicationConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.id</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-e</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-e</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## ProtocolConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.id</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.name</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.port</span>=<span class=
\"
hljs-string
\"
>12346</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## RegistryConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.id</span>=<span class=
\"
hljs-string
\"
>my-registry</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.address</span>=<span class=
\"
hljs-string
\"
>127.0.0.1:2181</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.protocol</span>=<span class=
\"
hljs-string
\"
>zookeeper</span>
\n\n
<span class=
\"
hljs-meta
\"
>dubbo.application.qos.enable</span>=<span class=
\"
hljs-string
\"
>false</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
#db</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://127.0.0.1:3306/txlcn-demo
\\\n
?characterEncoding=UTF-8&serverTimezone=UTC</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0-dev/example/dubbo-demo-e
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0/example/dubbo-demo-e</a></p>
\n
<h2>三、事务发起方 Client</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-comment
\"
># Spring boot application</span>
\n
<span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-client</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12004</span>
\n
<span class=
\"
hljs-meta
\"
>management.port</span>=<span class=
\"
hljs-string
\"
>12007</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Service Version</span>
\n
<span class=
\"
hljs-meta
\"
>demo.service.version</span>=<span class=
\"
hljs-string
\"
>1.0.0</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Dubbo Config properties</span>
\n
<span class=
\"
hljs-comment
\"
>## ApplicationConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.id</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-client</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-client</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.d</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-d</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.e</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-e</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## ProtocolConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.id</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.name</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.port</span>=<span class=
\"
hljs-string
\"
>12345</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.protocol</span>=<span class=
\"
hljs-string
\"
>zookeeper</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.address</span>=<span class=
\"
hljs-string
\"
>127.0.0.1:2181</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## db</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://127.0.0.1:3306/txlcn-demo
\\\n
?characterEncoding=UTF-8&serverTimezone=UTC</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/dubbo-demo-client
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/dubbo-demo-client</a></p>
\n
<h2>四、启动Dubbo微服务</h2>
\n
<p>(1) 事务参与方 D<br>
\n
<img src=
\"
img/dubbo-d.png
\"
alt=
\"
dubbo-d
\"
>
\n
(2) 事务参与方 E<br>
\n
<img src=
\"
img/dubbo-e.png
\"
alt=
\"
dubbo-e
\"
>
\n
(3) 事务发起方 Client<br>
\n
<img src=
\"
img/dubbo-client.png
\"
alt=
\"
dubbo-client
\"
></p>
\n
"
,
"__html"
:
"<h1>Dubbo示例</h1>
\n
<h2>一、事务参与方 D</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-d.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-comment
\"
># Spring boot application</span>
\n
<span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-d</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12005</span>
\n
<span class=
\"
hljs-meta
\"
>management.port</span>=<span class=
\"
hljs-string
\"
>12008</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Service version</span>
\n
<span class=
\"
hljs-meta
\"
>demo.service.version</span>=<span class=
\"
hljs-string
\"
>1.0.0</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Base packages to scan Dubbo Components (e.g @Service , @Reference)</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.scan.basePackages</span>=<span class=
\"
hljs-string
\"
>com.example</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Dubbo Config properties</span>
\n
<span class=
\"
hljs-comment
\"
>## ApplicationConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.id</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-d</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-d</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## ProtocolConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.id</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.name</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.port</span>=<span class=
\"
hljs-string
\"
>12345</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## RegistryConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.id</span>=<span class=
\"
hljs-string
\"
>my-registry</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.address</span>=<span class=
\"
hljs-string
\"
>127.0.0.1:2181</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.protocol</span>=<span class=
\"
hljs-string
\"
>zookeeper</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.qos.enable</span>=<span class=
\"
hljs-string
\"
>false</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## DB</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://127.0.0.1:3306/txlcn-demo
\\\n
?characterEncoding=UTF-8&serverTimezone=UTC</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
</code></pre>
\n
<p>src: <a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0-dev/example/dubbo-demo-d
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0/example/dubbo-demo-d</a></p>
\n
<h2>二、事务参与方 E</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-e.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-comment
\"
># Spring boot application</span>
\n
<span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-e</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12006</span>
\n
<span class=
\"
hljs-meta
\"
>management.port</span>=<span class=
\"
hljs-string
\"
>12009</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Service version</span>
\n
<span class=
\"
hljs-meta
\"
>demo.service.version</span>=<span class=
\"
hljs-string
\"
>1.0.0</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Base packages to scan Dubbo Components (e.g @Service , @Reference)</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.scan.basePackages</span>=<span class=
\"
hljs-string
\"
>com.example</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Dubbo Config properties</span>
\n
<span class=
\"
hljs-comment
\"
>## ApplicationConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.id</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-e</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-e</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## ProtocolConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.id</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.name</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.port</span>=<span class=
\"
hljs-string
\"
>12346</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## RegistryConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.id</span>=<span class=
\"
hljs-string
\"
>my-registry</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.address</span>=<span class=
\"
hljs-string
\"
>127.0.0.1:2181</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.protocol</span>=<span class=
\"
hljs-string
\"
>zookeeper</span>
\n\n
<span class=
\"
hljs-meta
\"
>dubbo.application.qos.enable</span>=<span class=
\"
hljs-string
\"
>false</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
#db</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://127.0.0.1:3306/txlcn-demo
\\\n
?characterEncoding=UTF-8&serverTimezone=UTC</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0-dev/example/dubbo-demo-e
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0/example/dubbo-demo-e</a></p>
\n
<h2>三、事务发起方 Client</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-comment
\"
># Spring boot application</span>
\n
<span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-client</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12004</span>
\n
<span class=
\"
hljs-meta
\"
>management.port</span>=<span class=
\"
hljs-string
\"
>12007</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Service Version</span>
\n
<span class=
\"
hljs-meta
\"
>demo.service.version</span>=<span class=
\"
hljs-string
\"
>1.0.0</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
# Dubbo Config properties</span>
\n
<span class=
\"
hljs-comment
\"
>## ApplicationConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.id</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-client</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.name</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-client</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.d</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-d</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.application.e</span>=<span class=
\"
hljs-string
\"
>dubbo-demo-e</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## ProtocolConfig Bean</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.id</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.name</span>=<span class=
\"
hljs-string
\"
>dubbo</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.protocol.port</span>=<span class=
\"
hljs-string
\"
>12345</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.protocol</span>=<span class=
\"
hljs-string
\"
>zookeeper</span>
\n
<span class=
\"
hljs-meta
\"
>dubbo.registry.address</span>=<span class=
\"
hljs-string
\"
>127.0.0.1:2181</span>
\n
<span class=
\"
hljs-comment
\"
>
\n
## db</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://127.0.0.1:3306/txlcn-demo
\\\n
?characterEncoding=UTF-8&serverTimezone=UTC</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/dubbo-demo-client
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/dubbo-demo-client</a></p>
\n
<h2>四、启动Dubbo微服务</h2>
\n
<p>(1) 事务参与方 D<br>
\n
<img src=
\"
img/dubbo-d.png
\"
alt=
\"
dubbo-d
\"
>
\n
(2) 事务参与方 E<br>
\n
<img src=
\"
img/dubbo-e.png
\"
alt=
\"
dubbo-e
\"
>
\n
(3) 事务发起方 Client<br>
\n
<img src=
\"
img/dubbo-client.png
\"
alt=
\"
dubbo-client
\"
></p>
\n
"
,
"link"
:
"/zh-cn/docs/demo/dubbo.html"
,
"meta"
:
{}
}
\ No newline at end of file
docs/zh-cn/docs/demo/springcloud.html
浏览文件 @
010af393
...
...
@@ -30,7 +30,7 @@
<span
class=
"hljs-meta"
>
mybatis.configuration.use-generated-keys
</span>
=
<span
class=
"hljs-string"
>
true
</span>
</code></pre>
<p>
src:
<a
href=
"https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/spring-demo-d"
>
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/spring-demo-d
</a></p>
<p>
src:
<a
href=
"https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/spring-demo-d"
>
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/spring-demo-d
</a></p>
<h2>
二、事务参与方E
</h2>
<p>
(1)新建Maven 工程
<br>
<img
src=
"img/maven-se.png"
alt=
"maven project"
><br>
...
...
@@ -48,7 +48,7 @@
<span
class=
"hljs-meta"
>
mybatis.configuration.use-generated-keys
</span>
=
<span
class=
"hljs-string"
>
true
</span>
</code></pre>
<p>
src:
<a
href=
"https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/spring-demo-e"
>
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/spring-demo-e
</a></p>
<p>
src:
<a
href=
"https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/spring-demo-e"
>
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/spring-demo-e
</a></p>
<h2>
三、事务发起方Client
</h2>
<p>
(1)新建Maven 工程
<br>
<img
src=
"img/maven-s.png"
alt=
"maven project"
><br>
...
...
@@ -71,7 +71,7 @@
<span
class=
"hljs-meta"
>
ribbon.MaxAutoRetriesNextServer
</span>
=
<span
class=
"hljs-string"
>
0
</span>
</code></pre>
<p>
src:
<a
href=
"https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/spring-demo-client"
>
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/spring-demo-client
</a></p>
<p>
src:
<a
href=
"https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/spring-demo-client"
>
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/spring-demo-client
</a></p>
<h2>
四、启动SpringCloud微服务
</h2>
<p>
(1) 事务参与方 D
<br>
<img
src=
"img/spring-d.png"
alt=
"spring-d"
>
...
...
docs/zh-cn/docs/demo/springcloud.json
浏览文件 @
010af393
{
"filename"
:
"springcloud.md"
,
"__html"
:
"<h1>SpringCloud示例</h1>
\n
<h2>一、事务参与方D</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-sd.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>spring-demo-d</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12002</span>
\n\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://ip:port/txlcn-demo?characterEncoding=UTF-8</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0.
beta/example/spring-demo-d
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0.beta/example/spring-demo-d</a></p>
\n
<h2>二、事务参与方E</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-se.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>spring-demo-e</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12003</span>
\n\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://ip:port/txlcn-demo?characterEncoding=UTF-8</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta/example/spring-demo-e
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0.beta/example/spring-demo-e</a></p>
\n
<h2>三、事务发起方Client</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-s.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>spring-demo-client</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12001</span>
\n\n\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://ip:port/txlcn-demo?characterEncoding=UTF-8</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-comment
\"
>
\n\n
# 关闭Ribbon的重试机制</span>
\n
<span class=
\"
hljs-meta
\"
>ribbon.MaxAutoRetriesNextServer</span>=<span class=
\"
hljs-string
\"
>0</span>
\n\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0.beta/example/spring-demo-client
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0.beta
/example/spring-demo-client</a></p>
\n
<h2>四、启动SpringCloud微服务</h2>
\n
<p>(1) 事务参与方 D<br>
\n
<img src=
\"
img/spring-d.png
\"
alt=
\"
spring-d
\"
>
\n
(2) 事务参与方 E<br>
\n
<img src=
\"
img/spring-e.png
\"
alt=
\"
spring-e
\"
>
\n
(3) 事务发起方 Client<br>
\n
<img src=
\"
img/spring-client.png
\"
alt=
\"
spring-client
\"
></p>
\n
"
,
"__html"
:
"<h1>SpringCloud示例</h1>
\n
<h2>一、事务参与方D</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-sd.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>spring-demo-d</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12002</span>
\n\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://ip:port/txlcn-demo?characterEncoding=UTF-8</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0.
RC1/example/spring-demo-d
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1/example/spring-demo-d</a></p>
\n
<h2>二、事务参与方E</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-se.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>spring-demo-e</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12003</span>
\n\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://ip:port/txlcn-demo?characterEncoding=UTF-8</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1/example/spring-demo-e
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1/example/spring-demo-e</a></p>
\n
<h2>三、事务发起方Client</h2>
\n
<p>(1)新建Maven 工程<br>
\n
<img src=
\"
img/maven-s.png
\"
alt=
\"
maven project
\"
><br>
\n
(2)项目配置文件 application.properties</p>
\n
<pre><code class=
\"
language-properties
\"
><span class=
\"
hljs-meta
\"
>spring.application.name</span>=<span class=
\"
hljs-string
\"
>spring-demo-client</span>
\n
<span class=
\"
hljs-meta
\"
>server.port</span>=<span class=
\"
hljs-string
\"
>12001</span>
\n\n\n
<span class=
\"
hljs-meta
\"
>spring.datasource.driver-class-name</span>=<span class=
\"
hljs-string
\"
>com.mysql.jdbc.Driver</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.url</span>=<span class=
\"
hljs-string
\"
>jdbc:mysql://ip:port/txlcn-demo?characterEncoding=UTF-8</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.username</span>=<span class=
\"
hljs-string
\"
>root</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.password</span>=<span class=
\"
hljs-string
\"
>123456</span>
\n
<span class=
\"
hljs-meta
\"
>spring.datasource.hikari.maximum-pool-size</span>=<span class=
\"
hljs-string
\"
>20</span>
\n\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.map-underscore-to-camel-case</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-meta
\"
>mybatis.configuration.use-generated-keys</span>=<span class=
\"
hljs-string
\"
>true</span>
\n
<span class=
\"
hljs-comment
\"
>
\n\n
# 关闭Ribbon的重试机制</span>
\n
<span class=
\"
hljs-meta
\"
>ribbon.MaxAutoRetriesNextServer</span>=<span class=
\"
hljs-string
\"
>0</span>
\n\n
</code></pre>
\n
<p>src:<a href=
\"
https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1/example/spring-demo-client
\"
>https://github.com/codingapi/tx-lcn/tree/5.0.0.RC1
/example/spring-demo-client</a></p>
\n
<h2>四、启动SpringCloud微服务</h2>
\n
<p>(1) 事务参与方 D<br>
\n
<img src=
\"
img/spring-d.png
\"
alt=
\"
spring-d
\"
>
\n
(2) 事务参与方 E<br>
\n
<img src=
\"
img/spring-e.png
\"
alt=
\"
spring-e
\"
>
\n
(3) 事务发起方 Client<br>
\n
<img src=
\"
img/spring-client.png
\"
alt=
\"
spring-client
\"
></p>
\n
"
,
"link"
:
"/zh-cn/docs/demo/springcloud.html"
,
"meta"
:
{}
}
\ No newline at end of file
docs/zh-cn/docs/expansion/rpc.html
浏览文件 @
010af393
...
...
@@ -99,7 +99,7 @@ public class RibbonFirstRestTemplateCustomizer implements RestTemplateCustomizer
<
parent
>
<
artifactId
>
tx-lcn
<
/artifactId
>
<
groupId
>
com.codingapi.txlcn
<
/groupId
>
<
version
>
5.0.0.
beta
<
/version
>
<
version
>
5.0.0.
RC1
<
/version
>
<
/parent
>
<
modelVersion
>
4.0.0
<
/modelVersion
>
<
packaging
>
pom
<
/packaging
>
...
...
docs/zh-cn/docs/expansion/rpc.json
浏览文件 @
010af393
{
"filename"
:
"rpc.md"
,
"__html"
:
"<h1>RPC框架扩展</h1>
\n
<p>为了方便说明以springcloud框架为例说明如何扩展第三方RPC框架。</p>
\n
<ol>
\n
<li>增加tx-spi-sleuth的扩展实现。</li>
\n
</ol>
\n
<p>关于sleuth 参考 <a href=
\"
https://cloud.spring.io/spring-cloud-sleuth/2.0.x/single/spring-cloud-sleuth.html
\"
>https://cloud.spring.io/spring-cloud-sleuth/2.0.x/single/spring-cloud-sleuth.html</a></p>
\n
<p>tx-spi-sleuth的扩展主要控制:重写负载机制、sleuth参数传递</p>
\n
<p>关于srpingcloud的负载机制扩展:</p>
\n
<p>srpingcloud的负载机制是基于ribbon,关于ribbon原理请参考
\n
关于ZoneAvoidanceRule的参考 <a href=
\"
https://cloud.spring.io/spring-cloud-netflix/2.0.x/single/spring-cloud-netflix.html
\"
>https://cloud.spring.io/spring-cloud-netflix/2.0.x/single/spring-cloud-netflix.html</a></p>
\n
<pre><code>@Slf4j
\n
@Scope("prototype")
\n
public class TXLCNZoneAvoidanceRule extends ZoneAvoidanceRule {
\n\n
//针对sleuth 负载控制的ExtraField参数设置
\n
private final SleuthParamListener sleuthParamListener;
\n\n
private final Registration registration;
\n\n
public TXLCNZoneAvoidanceRule(SleuthParamListener sleuthParamListener,
\n
Registration registration) {
\n
this.sleuthParamListener = sleuthParamListener;
\n
this.registration = registration;
\n
}
\n\n
@Override
\n
public Server choose(Object key) {
\n
return getServer(key);
\n
}
\n\n
private Server getServer(Object key) {
\n
String localKey = String.format("%s:%s:%s", registration.getServiceId(), registration.getHost(), registration.getPort());
\n
List<String> appList = sleuthParamListener.beforeBalance(localKey);
\n
Server balanceServer = null;
\n
List<Server> servers = getLoadBalancer().getAllServers();
\n
log.debug("load balanced rule servers: {}", servers);
\n
for (Server server : servers) {
\n
for (String appKey : appList) {
\n
String serverKey = String.format("%s:%s", server.getMetaInfo().getAppName(), server.getHostPort());
\n
if (serverKey.equals(appKey)) {
\n
balanceServer = server;
\n
}
\n
}
\n
}
\n
if (balanceServer == null) {
\n
Server server = super.choose(key);
\n
sleuthParamListener.alfterNewBalance(String.format("%s:%s", server.getMetaInfo().getAppName(), server.getHostPort()));
\n
return server;
\n
} else {
\n
return balanceServer;
\n
}
\n
}
\n\n
}
\n
</code></pre>
\n
<p>关于srpingcloud的sleuth参数传递扩展:</p>
\n
<p>由于ribbon与sleuth都是基于ClientHttpRequestInterceptor来控制的,但ribbon的拦截器的order小于sleuth,特此处理一下顺序。</p>
\n
<pre><code>@Component
\n
public class RibbonFirstRestTemplateCustomizer implements RestTemplateCustomizer {
\n\n\n
private LoadBalancerInterceptor loadBalancerInterceptor;
\n\n
@Autowired
\n
public RibbonFirstRestTemplateCustomizer(LoadBalancerInterceptor loadBalancerInterceptor) {
\n
this.loadBalancerInterceptor = loadBalancerInterceptor;
\n
}
\n\n
@Override
\n
public void customize(RestTemplate restTemplate) {
\n
List<ClientHttpRequestInterceptor> list = new ArrayList<>(restTemplate.getInterceptors());
\n
list.add(0,loadBalancerInterceptor);
\n
restTemplate.setInterceptors(list);
\n
}
\n\n
}
\n
</code></pre>
\n
<ol start=
\"
2
\"
>
\n
<li>提供client端的pom。例如tx-client-springcloud:</li>
\n
</ol>
\n
<pre><code><?xml version="1.0" encoding="UTF-8"?>
\n
<project xmlns="http://maven.apache.org/POM/4.0.0"
\n
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
\n
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
\n
<parent>
\n
<artifactId>tx-lcn</artifactId>
\n
<groupId>com.codingapi.txlcn</groupId>
\n
<version>5.0.0.
beta
</version>
\n
</parent>
\n
<modelVersion>4.0.0</modelVersion>
\n
<packaging>pom</packaging>
\n
<artifactId>tx-client-springcloud</artifactId>
\n\n\n
<dependencies>
\n\n
<dependency>
\n
<groupId>com.codingapi.txlcn</groupId>
\n
<artifactId>tx-client</artifactId>
\n
</dependency>
\n\n
<dependency>
\n
<groupId>com.codingapi.txlcn</groupId>
\n
<artifactId>tx-spi-sleuth-springcloud</artifactId>
\n
</dependency>
\n\n
</dependencies>
\n\n
</project>
\n\n
</code></pre>
\n
"
,
"__html"
:
"<h1>RPC框架扩展</h1>
\n
<p>为了方便说明以springcloud框架为例说明如何扩展第三方RPC框架。</p>
\n
<ol>
\n
<li>增加tx-spi-sleuth的扩展实现。</li>
\n
</ol>
\n
<p>关于sleuth 参考 <a href=
\"
https://cloud.spring.io/spring-cloud-sleuth/2.0.x/single/spring-cloud-sleuth.html
\"
>https://cloud.spring.io/spring-cloud-sleuth/2.0.x/single/spring-cloud-sleuth.html</a></p>
\n
<p>tx-spi-sleuth的扩展主要控制:重写负载机制、sleuth参数传递</p>
\n
<p>关于srpingcloud的负载机制扩展:</p>
\n
<p>srpingcloud的负载机制是基于ribbon,关于ribbon原理请参考
\n
关于ZoneAvoidanceRule的参考 <a href=
\"
https://cloud.spring.io/spring-cloud-netflix/2.0.x/single/spring-cloud-netflix.html
\"
>https://cloud.spring.io/spring-cloud-netflix/2.0.x/single/spring-cloud-netflix.html</a></p>
\n
<pre><code>@Slf4j
\n
@Scope("prototype")
\n
public class TXLCNZoneAvoidanceRule extends ZoneAvoidanceRule {
\n\n
//针对sleuth 负载控制的ExtraField参数设置
\n
private final SleuthParamListener sleuthParamListener;
\n\n
private final Registration registration;
\n\n
public TXLCNZoneAvoidanceRule(SleuthParamListener sleuthParamListener,
\n
Registration registration) {
\n
this.sleuthParamListener = sleuthParamListener;
\n
this.registration = registration;
\n
}
\n\n
@Override
\n
public Server choose(Object key) {
\n
return getServer(key);
\n
}
\n\n
private Server getServer(Object key) {
\n
String localKey = String.format("%s:%s:%s", registration.getServiceId(), registration.getHost(), registration.getPort());
\n
List<String> appList = sleuthParamListener.beforeBalance(localKey);
\n
Server balanceServer = null;
\n
List<Server> servers = getLoadBalancer().getAllServers();
\n
log.debug("load balanced rule servers: {}", servers);
\n
for (Server server : servers) {
\n
for (String appKey : appList) {
\n
String serverKey = String.format("%s:%s", server.getMetaInfo().getAppName(), server.getHostPort());
\n
if (serverKey.equals(appKey)) {
\n
balanceServer = server;
\n
}
\n
}
\n
}
\n
if (balanceServer == null) {
\n
Server server = super.choose(key);
\n
sleuthParamListener.alfterNewBalance(String.format("%s:%s", server.getMetaInfo().getAppName(), server.getHostPort()));
\n
return server;
\n
} else {
\n
return balanceServer;
\n
}
\n
}
\n\n
}
\n
</code></pre>
\n
<p>关于srpingcloud的sleuth参数传递扩展:</p>
\n
<p>由于ribbon与sleuth都是基于ClientHttpRequestInterceptor来控制的,但ribbon的拦截器的order小于sleuth,特此处理一下顺序。</p>
\n
<pre><code>@Component
\n
public class RibbonFirstRestTemplateCustomizer implements RestTemplateCustomizer {
\n\n\n
private LoadBalancerInterceptor loadBalancerInterceptor;
\n\n
@Autowired
\n
public RibbonFirstRestTemplateCustomizer(LoadBalancerInterceptor loadBalancerInterceptor) {
\n
this.loadBalancerInterceptor = loadBalancerInterceptor;
\n
}
\n\n
@Override
\n
public void customize(RestTemplate restTemplate) {
\n
List<ClientHttpRequestInterceptor> list = new ArrayList<>(restTemplate.getInterceptors());
\n
list.add(0,loadBalancerInterceptor);
\n
restTemplate.setInterceptors(list);
\n
}
\n\n
}
\n
</code></pre>
\n
<ol start=
\"
2
\"
>
\n
<li>提供client端的pom。例如tx-client-springcloud:</li>
\n
</ol>
\n
<pre><code><?xml version="1.0" encoding="UTF-8"?>
\n
<project xmlns="http://maven.apache.org/POM/4.0.0"
\n
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
\n
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
\n
<parent>
\n
<artifactId>tx-lcn</artifactId>
\n
<groupId>com.codingapi.txlcn</groupId>
\n
<version>5.0.0.
RC1
</version>
\n
</parent>
\n
<modelVersion>4.0.0</modelVersion>
\n
<packaging>pom</packaging>
\n
<artifactId>tx-client-springcloud</artifactId>
\n\n\n
<dependencies>
\n\n
<dependency>
\n
<groupId>com.codingapi.txlcn</groupId>
\n
<artifactId>tx-client</artifactId>
\n
</dependency>
\n\n
<dependency>
\n
<groupId>com.codingapi.txlcn</groupId>
\n
<artifactId>tx-spi-sleuth-springcloud</artifactId>
\n
</dependency>
\n\n
</dependencies>
\n\n
</project>
\n\n
</code></pre>
\n
"
,
"link"
:
"/zh-cn/docs/expansion/rpc.html"
,
"meta"
:
{}
}
\ No newline at end of file
docs/zh-cn/docs/start.html
浏览文件 @
010af393
...
...
@@ -18,14 +18,14 @@
<pre><code
class=
"language-xml"
><span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
dependency
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
groupId
</span>
>
</span>
com.codingapi.txlcn
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
groupId
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
artifactId
</span>
>
</span>
tx-client-springcloud
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
artifactId
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
version
</span>
>
</span>
5.0.0.
beta
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
version
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
version
</span>
>
</span>
5.0.0.
RC1
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
version
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
dependency
</span>
>
</span>
</code></pre>
<p>
dubbo pom
</p>
<pre><code
class=
"language-xml"
><span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
dependency
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
groupId
</span>
>
</span>
com.codingapi.txlcn
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
groupId
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
artifactId
</span>
>
</span>
tx-client-dubbo
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
artifactId
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
version
</span>
>
</span>
5.0.0.
beta
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
version
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
<span
class=
"hljs-name"
>
version
</span>
>
</span>
5.0.0.
RC1
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
version
</span>
>
</span>
<span
class=
"hljs-tag"
>
<
/
<span
class=
"hljs-name"
>
dependency
</span>
>
</span>
</code></pre>
<blockquote>
...
...
docs/zh-cn/docs/start.json
浏览文件 @
010af393
{
"filename"
:
"start.md"
,
"__html"
:
"<h1>快速开始</h1>
\n
<h2>一、微服务额外依赖TX-LCN Client 代码库</h2>
\n
<p>springcloud pom</p>
\n
<pre><code class=
\"
language-xml
\"
><span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>dependency</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>groupId</span>></span>com.codingapi.txlcn<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>groupId</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>artifactId</span>></span>tx-client-springcloud<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>artifactId</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>version</span>></span>5.0.0.
beta<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>version</span>></span>
\n
<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>dependency</span>></span>
\n
</code></pre>
\n
<p>dubbo pom</p>
\n
<pre><code class=
\"
language-xml
\"
><span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>dependency</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>groupId</span>></span>com.codingapi.txlcn<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>groupId</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>artifactId</span>></span>tx-client-dubbo<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>artifactId</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>version</span>></span>5.0.0.beta
<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>version</span>></span>
\n
<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>dependency</span>></span>
\n
</code></pre>
\n
<blockquote>
\n
<p><code>NOTE</code> 依微服务架构依赖其一</p>
\n
</blockquote>
\n
<h2>二、微服务示例代码</h2>
\n
<h3>(1)架构</h3>
\n
<p><img src=
\"
/img/quick_arch.png
\"
alt=
\"
arch
\"
></p>
\n
<h3>(2) 微服务A</h3>
\n
<pre><code class=
\"
language-java
\"
><span class=
\"
hljs-comment
\"
>// Micro Service A. As DTX starter</span>
\n
<span class=
\"
hljs-meta
\"
>@Service</span>
\n
<span class=
\"
hljs-keyword
\"
>public</span> <span class=
\"
hljs-class
\"
><span class=
\"
hljs-keyword
\"
>class</span> <span class=
\"
hljs-title
\"
>ServiceA</span> </span>{
\n
\n
<span class=
\"
hljs-meta
\"
>@Autowired</span>
\n
<span class=
\"
hljs-keyword
\"
>private</span> ValueDao valueDao;
\n
<span class=
\"
hljs-meta
\"
>@Autowired</span>
\n
<span class=
\"
hljs-keyword
\"
>private</span> ServiceB serviceB;
\n
\n
<span class=
\"
hljs-meta
\"
>@LcnTransaction</span>
\n
<span class=
\"
hljs-meta
\"
>@Transactional</span>
\n
<span class=
\"
hljs-function
\"
><span class=
\"
hljs-keyword
\"
>public</span> String <span class=
\"
hljs-title
\"
>execute</span><span class=
\"
hljs-params
\"
>(String value)</span> <span class=
\"
hljs-keyword
\"
>throws</span> BusinessException </span>{
\n
<span class=
\"
hljs-comment
\"
>// step1. call remote service B</span>
\n
String result = serviceB.rpc(value); <span class=
\"
hljs-comment
\"
>// (1)</span>
\n
<span class=
\"
hljs-comment
\"
>// step2. local store operate. DTX commit if save success, rollback if not.</span>
\n
valueDao.save(value); <span class=
\"
hljs-comment
\"
>// (2)</span>
\n
valueDao.saveBackup(value); <span class=
\"
hljs-comment
\"
>// (3)</span>
\n
<span class=
\"
hljs-keyword
\"
>return</span> result + <span class=
\"
hljs-string
\"
>
\"
>
\"
</span> + <span class=
\"
hljs-string
\"
>
\"
ok-A
\"
</span>;
\n
}
\n
}
\n
</code></pre>
\n
<h3>(3) 微服务B</h3>
\n
<pre><code class=
\"
language-java
\"
><span class=
\"
hljs-comment
\"
>// Micro Service D</span>
\n
<span class=
\"
hljs-meta
\"
>@Service</span>
\n
<span class=
\"
hljs-keyword
\"
>public</span> <span class=
\"
hljs-class
\"
><span class=
\"
hljs-keyword
\"
>class</span> <span class=
\"
hljs-title
\"
>ServiceB</span> </span>{
\n
<span class=
\"
hljs-meta
\"
>@Autowired</span>
\n
<span class=
\"
hljs-keyword
\"
>private</span> ValueDao valueDao;
\n
\n
<span class=
\"
hljs-meta
\"
>@LcnTransaction</span>
\n
<span class=
\"
hljs-meta
\"
>@Transactional</span>
\n
<span class=
\"
hljs-function
\"
><span class=
\"
hljs-keyword
\"
>public</span> String <span class=
\"
hljs-title
\"
>rpc</span><span class=
\"
hljs-params
\"
>(String value)</span> <span class=
\"
hljs-keyword
\"
>throws</span> BusinessException </span>{
\n
valueDao.save(value); <span class=
\"
hljs-comment
\"
>// (4)</span>
\n
valueDao.saveBackup(value); <span class=
\"
hljs-comment
\"
>// (5)</span>
\n
<span class=
\"
hljs-keyword
\"
>return</span> <span class=
\"
hljs-string
\"
>
\"
ok-B
\"
</span>;
\n
}
\n
}
\n
</code></pre>
\n
<p>(1) 服务A作为DTX发起方,远程调用服务B<br>
\n
(2)与(3) 构成A服务本地事务<br>
\n
(4)与(5) 构成B服务本地事务</p>
\n
<blockquote>
\n
<p><code>NOTES</code><br>
\n
1、@LcnTransaction
\n
标注事务单元用Lcn事务模式参与分布式事务<a href=
\"
principle/lcn.html
\"
>[原理]</a>。还有
\n
<a href=
\"
principle/txc.html
\"
>TXC</a> <a href=
\"
principle/tcc.html
\"
>TCC</a> 模式。<br>
\n
2、参数配置见 <a href=
\"
setting/client.html
\"
>TxClient配置</a><br>
\n
3、详细配置见 <a href=
\"
demo/dubbo.html
\"
>dubbo示例</a> <a href=
\"
demo/springcloud.html
\"
>springcloud示例</a></p>
\n
</blockquote>
\n
<h2>三、TxManager配置</h2>
\n
<p>配置TxManager参数并启动<br>
\n
参数配置见 <a href=
\"
setting/manager.html
\"
>TxManager配置</a></p>
\n
<hr>
\n
<p>至此,你已经开发好了一个简单的、支持分布式事务(DTX)的微服务系统</p>
\n
"
,
"__html"
:
"<h1>快速开始</h1>
\n
<h2>一、微服务额外依赖TX-LCN Client 代码库</h2>
\n
<p>springcloud pom</p>
\n
<pre><code class=
\"
language-xml
\"
><span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>dependency</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>groupId</span>></span>com.codingapi.txlcn<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>groupId</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>artifactId</span>></span>tx-client-springcloud<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>artifactId</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>version</span>></span>5.0.0.
RC1<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>version</span>></span>
\n
<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>dependency</span>></span>
\n
</code></pre>
\n
<p>dubbo pom</p>
\n
<pre><code class=
\"
language-xml
\"
><span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>dependency</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>groupId</span>></span>com.codingapi.txlcn<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>groupId</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>artifactId</span>></span>tx-client-dubbo<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>artifactId</span>></span>
\n
<span class=
\"
hljs-tag
\"
><<span class=
\"
hljs-name
\"
>version</span>></span>5.0.0.RC1
<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>version</span>></span>
\n
<span class=
\"
hljs-tag
\"
></<span class=
\"
hljs-name
\"
>dependency</span>></span>
\n
</code></pre>
\n
<blockquote>
\n
<p><code>NOTE</code> 依微服务架构依赖其一</p>
\n
</blockquote>
\n
<h2>二、微服务示例代码</h2>
\n
<h3>(1)架构</h3>
\n
<p><img src=
\"
/img/quick_arch.png
\"
alt=
\"
arch
\"
></p>
\n
<h3>(2) 微服务A</h3>
\n
<pre><code class=
\"
language-java
\"
><span class=
\"
hljs-comment
\"
>// Micro Service A. As DTX starter</span>
\n
<span class=
\"
hljs-meta
\"
>@Service</span>
\n
<span class=
\"
hljs-keyword
\"
>public</span> <span class=
\"
hljs-class
\"
><span class=
\"
hljs-keyword
\"
>class</span> <span class=
\"
hljs-title
\"
>ServiceA</span> </span>{
\n
\n
<span class=
\"
hljs-meta
\"
>@Autowired</span>
\n
<span class=
\"
hljs-keyword
\"
>private</span> ValueDao valueDao;
\n
<span class=
\"
hljs-meta
\"
>@Autowired</span>
\n
<span class=
\"
hljs-keyword
\"
>private</span> ServiceB serviceB;
\n
\n
<span class=
\"
hljs-meta
\"
>@LcnTransaction</span>
\n
<span class=
\"
hljs-meta
\"
>@Transactional</span>
\n
<span class=
\"
hljs-function
\"
><span class=
\"
hljs-keyword
\"
>public</span> String <span class=
\"
hljs-title
\"
>execute</span><span class=
\"
hljs-params
\"
>(String value)</span> <span class=
\"
hljs-keyword
\"
>throws</span> BusinessException </span>{
\n
<span class=
\"
hljs-comment
\"
>// step1. call remote service B</span>
\n
String result = serviceB.rpc(value); <span class=
\"
hljs-comment
\"
>// (1)</span>
\n
<span class=
\"
hljs-comment
\"
>// step2. local store operate. DTX commit if save success, rollback if not.</span>
\n
valueDao.save(value); <span class=
\"
hljs-comment
\"
>// (2)</span>
\n
valueDao.saveBackup(value); <span class=
\"
hljs-comment
\"
>// (3)</span>
\n
<span class=
\"
hljs-keyword
\"
>return</span> result + <span class=
\"
hljs-string
\"
>
\"
>
\"
</span> + <span class=
\"
hljs-string
\"
>
\"
ok-A
\"
</span>;
\n
}
\n
}
\n
</code></pre>
\n
<h3>(3) 微服务B</h3>
\n
<pre><code class=
\"
language-java
\"
><span class=
\"
hljs-comment
\"
>// Micro Service D</span>
\n
<span class=
\"
hljs-meta
\"
>@Service</span>
\n
<span class=
\"
hljs-keyword
\"
>public</span> <span class=
\"
hljs-class
\"
><span class=
\"
hljs-keyword
\"
>class</span> <span class=
\"
hljs-title
\"
>ServiceB</span> </span>{
\n
<span class=
\"
hljs-meta
\"
>@Autowired</span>
\n
<span class=
\"
hljs-keyword
\"
>private</span> ValueDao valueDao;
\n
\n
<span class=
\"
hljs-meta
\"
>@LcnTransaction</span>
\n
<span class=
\"
hljs-meta
\"
>@Transactional</span>
\n
<span class=
\"
hljs-function
\"
><span class=
\"
hljs-keyword
\"
>public</span> String <span class=
\"
hljs-title
\"
>rpc</span><span class=
\"
hljs-params
\"
>(String value)</span> <span class=
\"
hljs-keyword
\"
>throws</span> BusinessException </span>{
\n
valueDao.save(value); <span class=
\"
hljs-comment
\"
>// (4)</span>
\n
valueDao.saveBackup(value); <span class=
\"
hljs-comment
\"
>// (5)</span>
\n
<span class=
\"
hljs-keyword
\"
>return</span> <span class=
\"
hljs-string
\"
>
\"
ok-B
\"
</span>;
\n
}
\n
}
\n
</code></pre>
\n
<p>(1) 服务A作为DTX发起方,远程调用服务B<br>
\n
(2)与(3) 构成A服务本地事务<br>
\n
(4)与(5) 构成B服务本地事务</p>
\n
<blockquote>
\n
<p><code>NOTES</code><br>
\n
1、@LcnTransaction
\n
标注事务单元用Lcn事务模式参与分布式事务<a href=
\"
principle/lcn.html
\"
>[原理]</a>。还有
\n
<a href=
\"
principle/txc.html
\"
>TXC</a> <a href=
\"
principle/tcc.html
\"
>TCC</a> 模式。<br>
\n
2、参数配置见 <a href=
\"
setting/client.html
\"
>TxClient配置</a><br>
\n
3、详细配置见 <a href=
\"
demo/dubbo.html
\"
>dubbo示例</a> <a href=
\"
demo/springcloud.html
\"
>springcloud示例</a></p>
\n
</blockquote>
\n
<h2>三、TxManager配置</h2>
\n
<p>配置TxManager参数并启动<br>
\n
参数配置见 <a href=
\"
setting/manager.html
\"
>TxManager配置</a></p>
\n
<hr>
\n
<p>至此,你已经开发好了一个简单的、支持分布式事务(DTX)的微服务系统</p>
\n
"
,
"link"
:
"/zh-cn/docs/start.html"
,
"meta"
:
{}
}
\ No newline at end of file
example/demo-common/pom.xml
浏览文件 @
010af393
...
...
@@ -6,7 +6,7 @@
<parent>
<artifactId>
tx-lcn
</artifactId>
<groupId>
com.codingapi.txlcn
</groupId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
<relativePath>
../../pom.xml
</relativePath>
</parent>
<groupId>
com.example
</groupId>
...
...
example/dubbo-demo-client/pom.xml
浏览文件 @
010af393
...
...
@@ -6,7 +6,7 @@
<parent>
<groupId>
com.codingapi.txlcn
</groupId>
<artifactId>
tx-lcn
</artifactId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
<relativePath>
../../pom.xml
</relativePath>
</parent>
...
...
example/dubbo-demo-d/pom.xml
浏览文件 @
010af393
...
...
@@ -5,7 +5,7 @@
<parent>
<groupId>
com.codingapi.txlcn
</groupId>
<artifactId>
tx-lcn
</artifactId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
<relativePath>
../../pom.xml
</relativePath>
</parent>
<groupId>
com.example
</groupId>
...
...
example/dubbo-demo-e/pom.xml
浏览文件 @
010af393
...
...
@@ -5,7 +5,7 @@
<parent>
<groupId>
com.codingapi.txlcn
</groupId>
<artifactId>
tx-lcn
</artifactId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
<relativePath>
../../pom.xml
</relativePath>
</parent>
<groupId>
com.example
</groupId>
...
...
example/spring-demo-client/pom.xml
浏览文件 @
010af393
...
...
@@ -5,7 +5,7 @@
<parent>
<artifactId>
tx-lcn
</artifactId>
<groupId>
com.codingapi.txlcn
</groupId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
<relativePath>
../../pom.xml
</relativePath>
</parent>
<modelVersion>
4.0.0
</modelVersion>
...
...
@@ -26,7 +26,7 @@
<dependency>
<groupId>
com.codingapi.txlcn
</groupId>
<artifactId>
tx-client-springcloud
</artifactId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</dependency>
<dependency>
...
...
example/spring-demo-d/pom.xml
浏览文件 @
010af393
...
...
@@ -5,7 +5,7 @@
<parent>
<artifactId>
tx-lcn
</artifactId>
<groupId>
com.codingapi.txlcn
</groupId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
<relativePath>
../../pom.xml
</relativePath>
</parent>
<modelVersion>
4.0.0
</modelVersion>
...
...
example/spring-demo-e/pom.xml
浏览文件 @
010af393
...
...
@@ -5,7 +5,7 @@
<parent>
<artifactId>
tx-lcn
</artifactId>
<groupId>
com.codingapi.txlcn
</groupId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
<relativePath>
../../pom.xml
</relativePath>
</parent>
<modelVersion>
4.0.0
</modelVersion>
...
...
pom.xml
浏览文件 @
010af393
...
...
@@ -6,7 +6,7 @@
<groupId>
com.codingapi.txlcn
</groupId>
<artifactId>
tx-lcn
</artifactId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
<packaging>
pom
</packaging>
...
...
@@ -57,7 +57,7 @@
<maven.javadoc.plugin>
2.10.3
</maven.javadoc.plugin>
<maven.gpg.plugin>
1.6
</maven.gpg.plugin>
<codingapi.txlcn.version>
5.0.0.
beta
</codingapi.txlcn.version>
<codingapi.txlcn.version>
5.0.0.
RC1
</codingapi.txlcn.version>
<txlcn-org.projectlombok.version>
1.18.0
</txlcn-org.projectlombok.version>
<txlcn-spring-cloud.version>
Finchley.SR2
</txlcn-spring-cloud.version>
...
...
tx-client-dubbo/pom.xml
浏览文件 @
010af393
...
...
@@ -5,7 +5,7 @@
<parent>
<artifactId>
tx-lcn
</artifactId>
<groupId>
com.codingapi.txlcn
</groupId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
...
...
tx-client-springcloud/pom.xml
浏览文件 @
010af393
...
...
@@ -5,7 +5,7 @@
<parent>
<artifactId>
tx-lcn
</artifactId>
<groupId>
com.codingapi.txlcn
</groupId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
...
...
tx-client/pom.xml
浏览文件 @
010af393
...
...
@@ -10,7 +10,7 @@
<parent>
<groupId>
com.codingapi.txlcn
</groupId>
<artifactId>
tx-lcn
</artifactId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</parent>
...
...
tx-client/src/main/java/com/codingapi/tx/client/aspect/interceptor/DTXInterceptor.java
0 → 100644
浏览文件 @
010af393
package
com.codingapi.tx.client.aspect.interceptor
;
import
com.codingapi.tx.client.aspect.weave.DTXLogicWeaver
;
import
com.codingapi.tx.client.bean.DTXInfo
;
import
org.aopalliance.intercept.MethodInvocation
;
import
org.springframework.transaction.interceptor.TransactionInterceptor
;
/**
* Description:
* Date: 1/12/19
*
* @author ujued
*/
public
class
DTXInterceptor
extends
TransactionInterceptor
{
private
final
DTXLogicWeaver
dtxLogicWeaver
;
public
DTXInterceptor
(
DTXLogicWeaver
dtxLogicWeaver
)
{
this
.
dtxLogicWeaver
=
dtxLogicWeaver
;
}
@Override
public
Object
invoke
(
MethodInvocation
invocation
)
throws
Throwable
{
DTXInfo
dtxInfo
=
InterceptorInvocationUtils
.
load
(
invocation
);
return
dtxLogicWeaver
.
runTransaction
(
dtxInfo
,
()
->
super
.
invoke
(
invocation
));
}
}
tx-client/src/main/java/com/codingapi/tx/client/aspect/
DTXInterceptor
.java
→
tx-client/src/main/java/com/codingapi/tx/client/aspect/
interceptor/InterceptorInvocationUtils
.java
浏览文件 @
010af393
package
com.codingapi.tx.client.aspect
;
package
com.codingapi.tx.client.aspect
.interceptor
;
import
com.codingapi.tx.client.aspect.weave.DTXLogicWeaver
;
import
com.codingapi.tx.client.bean.DTXInfo
;
import
com.codingapi.tx.client.support.common.DTXInfoPool
;
import
com.codingapi.tx.commons.annotation.*
;
import
com.codingapi.tx.commons.util.Transactions
;
import
org.aopalliance.intercept.MethodInvocation
;
import
org.springframework.transaction.interceptor.TransactionInterceptor
;
import
java.util.Objects
;
/**
* Description:
* Date: 1/12/19
* Company: CodingApi
* Date: 2019/1/13
*
* @author
ujued
* @author
codingapi
*/
public
class
DTXInterceptor
extends
TransactionInterceptor
{
class
InterceptorInvocationUtils
{
private
final
DTXLogicWeaver
dtxLogicWeaver
;
private
String
transactionType
=
Transactions
.
LCN
;
private
DTXPropagation
dtxPropagation
=
DTXPropagation
.
REQUIRED
;
public
DTXInterceptor
(
DTXLogicWeaver
dtxLogicWeaver
)
{
this
.
dtxLogicWeaver
=
dtxLogicWeaver
;
}
@Override
public
Object
invoke
(
MethodInvocation
invocation
)
throws
Throwable
{
static
DTXInfo
load
(
MethodInvocation
invocation
){
TxTransaction
txTransaction
=
invocation
.
getMethod
().
getAnnotation
(
TxTransaction
.
class
);
String
transactionType
=
Transactions
.
LCN
;
DTXPropagation
dtxPropagation
=
DTXPropagation
.
REQUIRED
;
if
(
Objects
.
nonNull
(
txTransaction
))
{
t
his
.
t
ransactionType
=
txTransaction
.
type
();
this
.
dtxPropagation
=
txTransaction
.
dtxp
();
transactionType
=
txTransaction
.
type
();
dtxPropagation
=
txTransaction
.
dtxp
();
}
else
{
LcnTransaction
lcnTransaction
=
invocation
.
getMethod
().
getAnnotation
(
LcnTransaction
.
class
);
if
(
Objects
.
nonNull
(
lcnTransaction
))
{
t
his
.
t
ransactionType
=
Transactions
.
LCN
;
this
.
dtxPropagation
=
lcnTransaction
.
dtxp
();
transactionType
=
Transactions
.
LCN
;
dtxPropagation
=
lcnTransaction
.
dtxp
();
}
else
{
TxcTransaction
txcTransaction
=
invocation
.
getMethod
().
getAnnotation
(
TxcTransaction
.
class
);
if
(
Objects
.
nonNull
(
txcTransaction
))
{
t
his
.
t
ransactionType
=
Transactions
.
TXC
;
this
.
dtxPropagation
=
txcTransaction
.
dtxp
();
transactionType
=
Transactions
.
TXC
;
dtxPropagation
=
txcTransaction
.
dtxp
();
}
else
{
TccTransaction
tccTransaction
=
invocation
.
getMethod
().
getAnnotation
(
TccTransaction
.
class
);
if
(
Objects
.
nonNull
(
tccTransaction
))
{
t
his
.
t
ransactionType
=
Transactions
.
TCC
;
this
.
dtxPropagation
=
tccTransaction
.
dtxp
();
transactionType
=
Transactions
.
TCC
;
dtxPropagation
=
tccTransaction
.
dtxp
();
}
}
}
}
DTXInfo
dtxInfo
=
DTXInfoPool
.
get
(
invocation
);
dtxInfo
.
setTransactionType
(
this
.
transactionType
);
dtxInfo
.
setTransactionPropagation
(
this
.
dtxPropagation
);
return
dtxLogicWeaver
.
runTransaction
(
dtxInfo
,
()
->
super
.
invoke
(
invocation
));
}
public
String
getTransactionType
()
{
return
transactionType
;
}
public
void
setTransactionType
(
String
transactionType
)
{
this
.
transactionType
=
transactionType
;
}
public
DTXPropagation
getDtxPropagation
()
{
return
dtxPropagation
;
}
public
void
setDtxPropagation
(
DTXPropagation
dtxPropagation
)
{
this
.
dtxPropagation
=
dtxPropagation
;
dtxInfo
.
setTransactionType
(
transactionType
);
dtxInfo
.
setTransactionPropagation
(
dtxPropagation
);
return
dtxInfo
;
}
}
tx-client/src/main/java/com/codingapi/tx/client/aspect/interceptor/TXLCNInterceptor.java
0 → 100644
浏览文件 @
010af393
package
com.codingapi.tx.client.aspect.interceptor
;
import
com.codingapi.tx.client.aspect.weave.DTXLogicWeaver
;
import
com.codingapi.tx.client.bean.DTXInfo
;
import
org.aopalliance.intercept.MethodInterceptor
;
import
org.aopalliance.intercept.MethodInvocation
;
/**
* Description:
* Date: 1/12/19
*
* @author ujued
*/
public
class
TXLCNInterceptor
implements
MethodInterceptor
{
private
final
DTXLogicWeaver
dtxLogicWeaver
;
public
TXLCNInterceptor
(
DTXLogicWeaver
dtxLogicWeaver
)
{
this
.
dtxLogicWeaver
=
dtxLogicWeaver
;
}
@Override
public
Object
invoke
(
MethodInvocation
invocation
)
throws
Throwable
{
DTXInfo
dtxInfo
=
InterceptorInvocationUtils
.
load
(
invocation
);
return
dtxLogicWeaver
.
runTransaction
(
dtxInfo
,
invocation:
:
proceed
);
}
}
tx-client/src/main/java/com/codingapi/tx/client/bean/DTXInfo.java
浏览文件 @
010af393
...
...
@@ -47,4 +47,5 @@ public class DTXInfo {
public
void
reanalyseMethodArgs
(
Object
[]
args
)
{
this
.
transactionInfo
.
setArgumentValues
(
args
);
}
}
\ No newline at end of file
tx-client/src/main/java/com/codingapi/tx/client/spi/transaction/txc/control/TxcDefaultTransaction.java
浏览文件 @
010af393
...
...
@@ -2,6 +2,7 @@ package com.codingapi.tx.client.spi.transaction.txc.control;
import
com.codingapi.tx.client.bean.DTXLocal
;
import
com.codingapi.tx.client.bean.TxTransactionInfo
;
import
com.codingapi.tx.client.spi.transaction.txc.resource.def.bean.RollbackInfo
;
import
com.codingapi.tx.client.support.separate.TXLCNTransactionControl
;
import
org.springframework.stereotype.Component
;
...
...
@@ -16,6 +17,8 @@ public class TxcDefaultTransaction implements TXLCNTransactionControl {
@Override
public
void
preBusinessCode
(
TxTransactionInfo
info
)
{
// 准备回滚信息容器
DTXLocal
.
cur
().
setAttachment
(
new
RollbackInfo
());
// TXC 类型事务需要代理资源
DTXLocal
.
makeProxy
();
}
...
...
tx-client/src/main/resources/banner.txt
浏览文件 @
010af393
...
...
@@ -7,4 +7,4 @@ ${AnsiColor.BRIGHT_GREEN}
| | / /^\ \ | |___| \__/\| |\ |
\_/ \/ \/ \_____/\____/\_| \_/
TX-LCN TxClient version:5.0.0.
beta
TX-LCN TxClient version:5.0.0.
RC1
tx-commons/pom.xml
浏览文件 @
010af393
...
...
@@ -5,7 +5,7 @@
<parent>
<artifactId>
tx-lcn
</artifactId>
<groupId>
com.codingapi.txlcn
</groupId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
...
...
tx-commons/src/main/java/com/codingapi/tx/commons/annotation/LcnTransaction.java
浏览文件 @
010af393
package
com.codingapi.tx.commons.annotation
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.lang.annotation.*
;
/**
...
...
@@ -14,7 +12,6 @@ import java.lang.annotation.*;
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Inherited
@Documented
@Transactional
public
@interface
LcnTransaction
{
/**
...
...
tx-commons/src/main/java/com/codingapi/tx/commons/annotation/TccTransaction.java
浏览文件 @
010af393
package
com.codingapi.tx.commons.annotation
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.lang.annotation.*
;
/**
...
...
@@ -14,7 +12,6 @@ import java.lang.annotation.*;
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Inherited
@Documented
@Transactional
public
@interface
TccTransaction
{
/**
...
...
tx-commons/src/main/java/com/codingapi/tx/commons/annotation/TxTransaction.java
浏览文件 @
010af393
package
com.codingapi.tx.commons.annotation
;
import
com.codingapi.tx.commons.util.Transactions
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.lang.annotation.*
;
...
...
@@ -12,7 +11,6 @@ import java.lang.annotation.*;
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Inherited
@Documented
@Transactional
public
@interface
TxTransaction
{
...
...
tx-jdbcproxy-p6spy/pom.xml
浏览文件 @
010af393
...
...
@@ -5,7 +5,7 @@
<parent>
<artifactId>
tx-lcn
</artifactId>
<groupId>
com.codingapi.txlcn
</groupId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
...
...
tx-logger/pom.xml
浏览文件 @
010af393
...
...
@@ -5,7 +5,7 @@
<parent>
<artifactId>
tx-lcn
</artifactId>
<groupId>
com.codingapi.txlcn
</groupId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
...
...
tx-manager/pom.xml
浏览文件 @
010af393
...
...
@@ -10,7 +10,7 @@
<parent>
<groupId>
com.codingapi.txlcn
</groupId>
<artifactId>
tx-lcn
</artifactId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</parent>
<dependencies>
...
...
tx-manager/src/main/resources/banner.txt
浏览文件 @
010af393
...
...
@@ -8,5 +8,5 @@ ${AnsiColor.BRIGHT_GREEN}
\_/ \/ \/ \_____/\____/\_| \_/
TX-LCN TxManager version:5.0.0.
beta
TX-LCN TxManager version:5.0.0.
RC1
tx-spi-message-netty/pom.xml
浏览文件 @
010af393
...
...
@@ -5,7 +5,7 @@
<parent>
<artifactId>
tx-lcn
</artifactId>
<groupId>
com.codingapi.txlcn
</groupId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
...
...
tx-spi-message/pom.xml
浏览文件 @
010af393
...
...
@@ -5,7 +5,7 @@
<parent>
<artifactId>
tx-lcn
</artifactId>
<groupId>
com.codingapi.txlcn
</groupId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
...
...
tx-spi-sleuth/pom.xml
浏览文件 @
010af393
...
...
@@ -5,7 +5,7 @@
<parent>
<artifactId>
tx-lcn
</artifactId>
<groupId>
com.codingapi.txlcn
</groupId>
<version>
5.0.0.
beta
</version>
<version>
5.0.0.
RC1
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录