准备:
1
2
3
4
5
6
7
8 1启动注册中心;
2启动redis ;
3启动事务管理器
4启动mysql ;
5启动微服务1 ;
6启动微服务2
7
8
(1)正常事务测试:
不抛出异常,两边都插入
1 设计没有故障整合服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 1@TxTransaction(isStart=true)
2 @Override
3 @Transactional
4 public int saveBlockTheme(Block block, Theme theme) {
5 // return blockDao.saveBlock(name, blockDesc);
6
7 int rs1 = blockDao.saveBlock("jwg1", "111");// 3 保存1
8
9 int rs2 = themeClient.saveTheme("jwg2", "111", 1);// 4 保存2
10
11 // int v = 100/0; //没有故障
12
13 return rs1 + rs2;
14
15 }
16}
17
18
2 在浏览器输入:http://localhost:8020/saveBlockTheme
结果:
3 到数据库查看:
Block表
Theme表
两个库的表中都插入
(2)非正常事务测试
认为抛出异常,两边都不插入
1设计有故障服务
1
2
3
4
5
6
7
8
9
10
11
12
13 1@TxTransaction(isStart=true)
2@Override
3 @Transactional
4 public int saveBlockTheme(Block block, Theme theme) {
5 // return blockDao.saveBlock(name, blockDesc);
6 int rs1 = blockDao.saveBlock("jwg1", "111");// 3 保存1
7 int rs2 = themeClient.saveTheme("jwg2", "111", 1);// 4 保存2
8 int v = 100/0; //故障
9 return rs1 + rs2;
10 }
11}
12
13
2 在浏览器输入:http://localhost:8020/saveBlockTheme
3 去数据库查看
Block表
没有记录
Theme表
没有记录,说明回滚成功
总结:
通过10篇文章的论述,成功实现了基于springcloud分布式微服务的分布式事务管理设计,实现和测试。希望在黑暗中摸索的同学有些帮助。