提交 010af393 编写于 作者: U ujued

5.0.0.RC1

上级 533486e9
# 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模式,同时把分布式事务协调的模式抽象出来,让各种模式可以嵌套使用。
......
......@@ -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
......
......@@ -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
......
......@@ -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>
......
......@@ -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` 依微服务架构依赖其一
......
......@@ -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
......
......@@ -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
......
......@@ -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>
......
......@@ -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` 依微服务架构依赖其一
......
......@@ -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">
......
{
"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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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
......@@ -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">
......
{
"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
......@@ -99,7 +99,7 @@ public class RibbonFirstRestTemplateCustomizer implements RestTemplateCustomizer
&lt;parent&gt;
&lt;artifactId&gt;tx-lcn&lt;/artifactId&gt;
&lt;groupId&gt;com.codingapi.txlcn&lt;/groupId&gt;
&lt;version&gt;5.0.0.beta&lt;/version&gt;
&lt;version&gt;5.0.0.RC1&lt;/version&gt;
&lt;/parent&gt;
&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
&lt;packaging&gt;pom&lt;/packaging&gt;
......
{
"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(&quot;prototype&quot;)\npublic 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(&quot;%s:%s:%s&quot;, registration.getServiceId(), registration.getHost(), registration.getPort());\n List&lt;String&gt; appList = sleuthParamListener.beforeBalance(localKey);\n Server balanceServer = null;\n List&lt;Server&gt; servers = getLoadBalancer().getAllServers();\n log.debug(&quot;load balanced rule servers: {}&quot;, servers);\n for (Server server : servers) {\n for (String appKey : appList) {\n String serverKey = String.format(&quot;%s:%s&quot;, 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(&quot;%s:%s&quot;, 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\npublic 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&lt;ClientHttpRequestInterceptor&gt; list = new ArrayList&lt;&gt;(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>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;\n xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;\n xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;\n &lt;parent&gt;\n &lt;artifactId&gt;tx-lcn&lt;/artifactId&gt;\n &lt;groupId&gt;com.codingapi.txlcn&lt;/groupId&gt;\n &lt;version&gt;5.0.0.beta&lt;/version&gt;\n &lt;/parent&gt;\n &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;\n &lt;packaging&gt;pom&lt;/packaging&gt;\n &lt;artifactId&gt;tx-client-springcloud&lt;/artifactId&gt;\n\n\n &lt;dependencies&gt;\n\n &lt;dependency&gt;\n &lt;groupId&gt;com.codingapi.txlcn&lt;/groupId&gt;\n &lt;artifactId&gt;tx-client&lt;/artifactId&gt;\n &lt;/dependency&gt;\n\n &lt;dependency&gt;\n &lt;groupId&gt;com.codingapi.txlcn&lt;/groupId&gt;\n &lt;artifactId&gt;tx-spi-sleuth-springcloud&lt;/artifactId&gt;\n &lt;/dependency&gt;\n\n &lt;/dependencies&gt;\n\n&lt;/project&gt;\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(&quot;prototype&quot;)\npublic 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(&quot;%s:%s:%s&quot;, registration.getServiceId(), registration.getHost(), registration.getPort());\n List&lt;String&gt; appList = sleuthParamListener.beforeBalance(localKey);\n Server balanceServer = null;\n List&lt;Server&gt; servers = getLoadBalancer().getAllServers();\n log.debug(&quot;load balanced rule servers: {}&quot;, servers);\n for (Server server : servers) {\n for (String appKey : appList) {\n String serverKey = String.format(&quot;%s:%s&quot;, 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(&quot;%s:%s&quot;, 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\npublic 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&lt;ClientHttpRequestInterceptor&gt; list = new ArrayList&lt;&gt;(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>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;\n xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;\n xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;\n &lt;parent&gt;\n &lt;artifactId&gt;tx-lcn&lt;/artifactId&gt;\n &lt;groupId&gt;com.codingapi.txlcn&lt;/groupId&gt;\n &lt;version&gt;5.0.0.RC1&lt;/version&gt;\n &lt;/parent&gt;\n &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;\n &lt;packaging&gt;pom&lt;/packaging&gt;\n &lt;artifactId&gt;tx-client-springcloud&lt;/artifactId&gt;\n\n\n &lt;dependencies&gt;\n\n &lt;dependency&gt;\n &lt;groupId&gt;com.codingapi.txlcn&lt;/groupId&gt;\n &lt;artifactId&gt;tx-client&lt;/artifactId&gt;\n &lt;/dependency&gt;\n\n &lt;dependency&gt;\n &lt;groupId&gt;com.codingapi.txlcn&lt;/groupId&gt;\n &lt;artifactId&gt;tx-spi-sleuth-springcloud&lt;/artifactId&gt;\n &lt;/dependency&gt;\n\n &lt;/dependencies&gt;\n\n&lt;/project&gt;\n\n</code></pre>\n",
"link": "/en-us/docs/expansion/rpc.html",
"meta": {}
}
\ No newline at end of file
......@@ -18,14 +18,14 @@
<pre><code class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>com.codingapi.txlcn<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>tx-client-springcloud<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>5.0.0.beta<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>5.0.0.RC1<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
</code></pre>
<p>dubbo pom</p>
<pre><code class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>com.codingapi.txlcn<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>tx-client-dubbo<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>5.0.0.beta<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>5.0.0.RC1<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
</code></pre>
<blockquote>
......
{
"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\">&lt;<span class=\"hljs-name\">dependency</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId</span>&gt;</span>com.codingapi.txlcn<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">groupId</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId</span>&gt;</span>tx-client-springcloud<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">artifactId</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version</span>&gt;</span>5.0.0.beta<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">version</span>&gt;</span>\n<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">dependency</span>&gt;</span>\n</code></pre>\n<p>dubbo pom</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId</span>&gt;</span>com.codingapi.txlcn<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">groupId</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId</span>&gt;</span>tx-client-dubbo<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">artifactId</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version</span>&gt;</span>5.0.0.beta<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">version</span>&gt;</span>\n<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">dependency</span>&gt;</span>\n</code></pre>\n<blockquote>\n<p><code>NOTE</code> 依微服务架构依赖其一</p>\n</blockquote>\n<h2>二、微服务示例代码</h2>\n<p>ServiceA 事务发起方<br>\nServiceB 事务参与方(被调方)<br>\n<code>ServiceA-&gt;ServiceB</code></p>\n<p>ServiceA调用ServiceB.rpc(String value)方法<br>\n<code>ServiceA=&gt;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\">\" &gt; \"</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>\n1、@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>\n2、参数配置见 <a href=\"setting/client.html\">TxClient配置</a><br>\n3、详细配置见 <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\">&lt;<span class=\"hljs-name\">dependency</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId</span>&gt;</span>com.codingapi.txlcn<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">groupId</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId</span>&gt;</span>tx-client-springcloud<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">artifactId</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version</span>&gt;</span>5.0.0.RC1<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">version</span>&gt;</span>\n<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">dependency</span>&gt;</span>\n</code></pre>\n<p>dubbo pom</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId</span>&gt;</span>com.codingapi.txlcn<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">groupId</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId</span>&gt;</span>tx-client-dubbo<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">artifactId</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version</span>&gt;</span>5.0.0.RC1<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">version</span>&gt;</span>\n<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">dependency</span>&gt;</span>\n</code></pre>\n<blockquote>\n<p><code>NOTE</code> 依微服务架构依赖其一</p>\n</blockquote>\n<h2>二、微服务示例代码</h2>\n<p>ServiceA 事务发起方<br>\nServiceB 事务参与方(被调方)<br>\n<code>ServiceA-&gt;ServiceB</code></p>\n<p>ServiceA调用ServiceB.rpc(String value)方法<br>\n<code>ServiceA=&gt;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\">\" &gt; \"</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>\n1、@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>\n2、参数配置见 <a href=\"setting/client.html\">TxClient配置</a><br>\n3、详细配置见 <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
......@@ -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">
......
{
"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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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
......@@ -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">
......
{
"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
......@@ -99,7 +99,7 @@ public class RibbonFirstRestTemplateCustomizer implements RestTemplateCustomizer
&lt;parent&gt;
&lt;artifactId&gt;tx-lcn&lt;/artifactId&gt;
&lt;groupId&gt;com.codingapi.txlcn&lt;/groupId&gt;
&lt;version&gt;5.0.0.beta&lt;/version&gt;
&lt;version&gt;5.0.0.RC1&lt;/version&gt;
&lt;/parent&gt;
&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
&lt;packaging&gt;pom&lt;/packaging&gt;
......
{
"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(&quot;prototype&quot;)\npublic 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(&quot;%s:%s:%s&quot;, registration.getServiceId(), registration.getHost(), registration.getPort());\n List&lt;String&gt; appList = sleuthParamListener.beforeBalance(localKey);\n Server balanceServer = null;\n List&lt;Server&gt; servers = getLoadBalancer().getAllServers();\n log.debug(&quot;load balanced rule servers: {}&quot;, servers);\n for (Server server : servers) {\n for (String appKey : appList) {\n String serverKey = String.format(&quot;%s:%s&quot;, 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(&quot;%s:%s&quot;, 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\npublic 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&lt;ClientHttpRequestInterceptor&gt; list = new ArrayList&lt;&gt;(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>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;\n xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;\n xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;\n &lt;parent&gt;\n &lt;artifactId&gt;tx-lcn&lt;/artifactId&gt;\n &lt;groupId&gt;com.codingapi.txlcn&lt;/groupId&gt;\n &lt;version&gt;5.0.0.beta&lt;/version&gt;\n &lt;/parent&gt;\n &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;\n &lt;packaging&gt;pom&lt;/packaging&gt;\n &lt;artifactId&gt;tx-client-springcloud&lt;/artifactId&gt;\n\n\n &lt;dependencies&gt;\n\n &lt;dependency&gt;\n &lt;groupId&gt;com.codingapi.txlcn&lt;/groupId&gt;\n &lt;artifactId&gt;tx-client&lt;/artifactId&gt;\n &lt;/dependency&gt;\n\n &lt;dependency&gt;\n &lt;groupId&gt;com.codingapi.txlcn&lt;/groupId&gt;\n &lt;artifactId&gt;tx-spi-sleuth-springcloud&lt;/artifactId&gt;\n &lt;/dependency&gt;\n\n &lt;/dependencies&gt;\n\n&lt;/project&gt;\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(&quot;prototype&quot;)\npublic 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(&quot;%s:%s:%s&quot;, registration.getServiceId(), registration.getHost(), registration.getPort());\n List&lt;String&gt; appList = sleuthParamListener.beforeBalance(localKey);\n Server balanceServer = null;\n List&lt;Server&gt; servers = getLoadBalancer().getAllServers();\n log.debug(&quot;load balanced rule servers: {}&quot;, servers);\n for (Server server : servers) {\n for (String appKey : appList) {\n String serverKey = String.format(&quot;%s:%s&quot;, 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(&quot;%s:%s&quot;, 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\npublic 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&lt;ClientHttpRequestInterceptor&gt; list = new ArrayList&lt;&gt;(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>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;\n xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;\n xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;\n &lt;parent&gt;\n &lt;artifactId&gt;tx-lcn&lt;/artifactId&gt;\n &lt;groupId&gt;com.codingapi.txlcn&lt;/groupId&gt;\n &lt;version&gt;5.0.0.RC1&lt;/version&gt;\n &lt;/parent&gt;\n &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;\n &lt;packaging&gt;pom&lt;/packaging&gt;\n &lt;artifactId&gt;tx-client-springcloud&lt;/artifactId&gt;\n\n\n &lt;dependencies&gt;\n\n &lt;dependency&gt;\n &lt;groupId&gt;com.codingapi.txlcn&lt;/groupId&gt;\n &lt;artifactId&gt;tx-client&lt;/artifactId&gt;\n &lt;/dependency&gt;\n\n &lt;dependency&gt;\n &lt;groupId&gt;com.codingapi.txlcn&lt;/groupId&gt;\n &lt;artifactId&gt;tx-spi-sleuth-springcloud&lt;/artifactId&gt;\n &lt;/dependency&gt;\n\n &lt;/dependencies&gt;\n\n&lt;/project&gt;\n\n</code></pre>\n",
"link": "/zh-cn/docs/expansion/rpc.html",
"meta": {}
}
\ No newline at end of file
......@@ -18,14 +18,14 @@
<pre><code class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>com.codingapi.txlcn<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>tx-client-springcloud<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>5.0.0.beta<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>5.0.0.RC1<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
</code></pre>
<p>dubbo pom</p>
<pre><code class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>com.codingapi.txlcn<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>tx-client-dubbo<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>5.0.0.beta<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>5.0.0.RC1<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
</code></pre>
<blockquote>
......
{
"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\">&lt;<span class=\"hljs-name\">dependency</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId</span>&gt;</span>com.codingapi.txlcn<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">groupId</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId</span>&gt;</span>tx-client-springcloud<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">artifactId</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version</span>&gt;</span>5.0.0.beta<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">version</span>&gt;</span>\n<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">dependency</span>&gt;</span>\n</code></pre>\n<p>dubbo pom</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId</span>&gt;</span>com.codingapi.txlcn<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">groupId</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId</span>&gt;</span>tx-client-dubbo<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">artifactId</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version</span>&gt;</span>5.0.0.beta<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">version</span>&gt;</span>\n<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">dependency</span>&gt;</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\">\" &gt; \"</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>\n1、@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>\n2、参数配置见 <a href=\"setting/client.html\">TxClient配置</a><br>\n3、详细配置见 <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\">&lt;<span class=\"hljs-name\">dependency</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId</span>&gt;</span>com.codingapi.txlcn<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">groupId</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId</span>&gt;</span>tx-client-springcloud<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">artifactId</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version</span>&gt;</span>5.0.0.RC1<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">version</span>&gt;</span>\n<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">dependency</span>&gt;</span>\n</code></pre>\n<p>dubbo pom</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId</span>&gt;</span>com.codingapi.txlcn<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">groupId</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId</span>&gt;</span>tx-client-dubbo<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">artifactId</span>&gt;</span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version</span>&gt;</span>5.0.0.RC1<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">version</span>&gt;</span>\n<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">dependency</span>&gt;</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\">\" &gt; \"</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>\n1、@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>\n2、参数配置见 <a href=\"setting/client.html\">TxClient配置</a><br>\n3、详细配置见 <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
......@@ -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>
......
......@@ -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>
......
......@@ -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>
......
......@@ -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>
......
......@@ -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>
......
......@@ -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>
......
......@@ -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>
......
......@@ -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>
......
......@@ -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>
......
......@@ -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>
......
......@@ -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>
......
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));
}
}
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)) {
this.transactionType = txTransaction.type();
this.dtxPropagation = txTransaction.dtxp();
transactionType = txTransaction.type();
dtxPropagation = txTransaction.dtxp();
} else {
LcnTransaction lcnTransaction = invocation.getMethod().getAnnotation(LcnTransaction.class);
if (Objects.nonNull(lcnTransaction)) {
this.transactionType = Transactions.LCN;
this.dtxPropagation = lcnTransaction.dtxp();
transactionType = Transactions.LCN;
dtxPropagation = lcnTransaction.dtxp();
} else {
TxcTransaction txcTransaction = invocation.getMethod().getAnnotation(TxcTransaction.class);
if (Objects.nonNull(txcTransaction)) {
this.transactionType = Transactions.TXC;
this.dtxPropagation = txcTransaction.dtxp();
transactionType = Transactions.TXC;
dtxPropagation = txcTransaction.dtxp();
} else {
TccTransaction tccTransaction = invocation.getMethod().getAnnotation(TccTransaction.class);
if (Objects.nonNull(tccTransaction)) {
this.transactionType = 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;
}
}
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);
}
}
......@@ -47,4 +47,5 @@ public class DTXInfo {
public void reanalyseMethodArgs(Object[] args) {
this.transactionInfo.setArgumentValues(args);
}
}
\ No newline at end of file
......@@ -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();
}
......
......@@ -7,4 +7,4 @@ ${AnsiColor.BRIGHT_GREEN}
| | / /^\ \ | |___| \__/\| |\ |
\_/ \/ \/ \_____/\____/\_| \_/
TX-LCN TxClient version:5.0.0.beta
TX-LCN TxClient version:5.0.0.RC1
......@@ -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>
......
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 {
/**
......
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 {
/**
......
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 {
......
......@@ -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>
......
......@@ -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>
......
......@@ -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>
......
......@@ -8,5 +8,5 @@ ${AnsiColor.BRIGHT_GREEN}
\_/ \/ \/ \_____/\____/\_| \_/
TX-LCN TxManager version:5.0.0.beta
TX-LCN TxManager version:5.0.0.RC1
......@@ -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>
......
......@@ -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>
......
......@@ -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.
先完成此消息的编辑!
想要评论请 注册