準備:
啓動註冊中心;
啓動redis ;
啓動事務管理器
啓動mysql ;
啓動微服務1 ;
啓動微服務2
(1)正常事務測試:
不拋出異常,兩邊都插入
1 設計沒有故障整合服務
@TxTransaction(isStart=true)
@Override
@Transactional
public int saveBlockTheme(Block block, Theme theme) {
// return blockDao.saveBlock(name, blockDesc);
int rs1 = blockDao.saveBlock("jwg1", "111");// 3 保存1
int rs2 = themeClient.saveTheme("jwg2", "111", 1);// 4 保存2
// int v = 100/0; //沒有故障
return rs1 + rs2;
}
}
2 在瀏覽器輸入:http://localhost:8020/saveBlockTheme
結果:
3 到數據庫查看:
Block表
Theme表
兩個庫的表中都插入
(2)非正常事務測試
認爲拋出異常,兩邊都不插入
1設計有故障服務
@TxTransaction(isStart=true)
@Override
@Transactional
public int saveBlockTheme(Block block, Theme theme) {
// return blockDao.saveBlock(name, blockDesc);
int rs1 = blockDao.saveBlock("jwg1", "111");// 3 保存1
int rs2 = themeClient.saveTheme("jwg2", "111", 1);// 4 保存2
int v = 100/0; //故障
return rs1 + rs2;
}
}
2 在瀏覽器輸入:http://localhost:8020/saveBlockTheme
3 去數據庫查看
Block表
沒有記錄
Theme表
沒有記錄,說明回滾成功
總結:
通過10篇文章的論述,成功實現了基於springcloud分佈式微服務的分佈式事務管理設計,實現和測試。希望在黑暗中摸索的同學有些幫助。