-
Notifications
You must be signed in to change notification settings - Fork 174
Home
lorne edited this page Apr 2, 2018
·
4 revisions
demo下分为jdbc/jpa/mybatis 三种版本的demo,可根据自己的项目需求来对应查看相关的demo
其中jdbc版本的demo涉及到了5个业务模块,他们的调用关系图如下:
jpa版本的demo中有是哪个模块,其中demo3是没有数据库事务的中间模块:
mybatis版本的demo中使用了hytrix,有两个模块,并且demo1,自定义了TxManager的通讯方式和tx.properties地址的获取方式。调用关系图如下:
springcloud-lcn-demo 需要依赖的服务有:
- TxManager
- Mysql
- Redis
- Eureka
TxManager的启动与配置见:
- TxManager启动说明中包含Eureka的配置环境
demo项目的数据库配置在application.properties配置文件下
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
spring.datasource.url= jdbc:mysql://localhost:3306/test
spring.datasource.username= root
spring.datasource.password=root
spring.datasource.initialize = true
spring.application.name = demo2
server.port = 8082
#${random.int[9000,9999]}
eureka.client.service-url.defaultZone=http://127.0.0.1:8761/eureka/
数据库为test,账号密码为root/root,使用者可根据自己的环境调整。
数据库的初始化脚本
USE test;
DROP TABLE IF EXISTS `t_test`;
CREATE TABLE `t_test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
关于ribbon.MaxAutoRetriesNextServer=0
,由于springcloud默认是开启的重试机制,开启次机制以后会导致当springcloud请求超时时会重复调用业务模块,从而会引发数据混乱,因此建议将其禁用。对于网络模块超时等故障问题建议使用hytrix方式。
- 添加maven依赖。请及时关注maven中心库的最新版本,尽量使用最新版本。
<dependency>
<groupId>com.codingapi</groupId>
<artifactId>transaction-springcloud</artifactId>
<version>${lcn.last.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.codingapi</groupId>
<artifactId>tx-plugins-db</artifactId>
<version>${lcn.last.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
- 添加tx.properties配置
#txmanager地址
url=http://127.0.0.1:8899/tx/manager/
所有的demo启动以后的访问地址都是
http://127.0.0.1:8081/demo/save
请求以后会出现 / by zero异常。这是由于在demo1的最后一句代码上写有int v = 100/0;
当把这句代码注释掉以后再执行时,此时观察数据你会发现没有任何数据在数据库下将会看到有两条数据。