spring cloud微服务下手动回滚事务
2024-08-26 01:46:01
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
这里使用的场景是,跨服务调用接口,比如:用户信息和用户积分信息在分别存在两个系统中,我们在用户系统中调用一个接口同时删除这两个信息,假设service层方法为deleteUserAndPoints(),具体如下所示:
deleteUserAndPoints(){
第一步:删除用户
第二步:通过restTemplate方式调用积分系统删除接口
根据返回的结果状态,成功或者失败
如果失败则:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(), 然后return 相应的提示信息(“删除失败”);如果直接return 其实事务不会回滚的,导致用户信息删除,积分信息未删除;另外,我们正常情况下可以直接 throw new RuntimeException(),也能回滚事务,但是这等于手动制造了一个系统异常,个人觉得很不友好
如果成功则:不处理
}
最新文章
- ACM之路(20)—— Splay初探
- ubuntu16.04 安装网易云音乐
- SU suspike命令学习
- iOS开发——图形与动画篇OC篇&;图层基本上动画
- JAXB - Unmarshalling
- MVC 中 使用TagBuilder扩展HtmlHelper
- C#编程使用到的几种调试方式
- iOS 辛格尔顿
- SpringMvc MultipartFile 图片文件上传
- Javascript 查找元素
- js中时间的处理
- UVA 10622 Perfect P-th Powers
- 如何在ADO中使用数据读取器(DataReader)读取数据
- Mac下查看已安装的jdk版本及其安装目录
- [C++]2-6 排列
- Python从菜鸟到高手(3):声明变量
- ssh-keygen生成git ssh密钥
- Java生成指定范围内的工具类
- python redis 的基本操作指令
- android 视频 2017