怎么实现Java Spring Boot分布式事务


这篇文章主要介绍了怎么实现Java Spring Boot分布式事务的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么实现Java Spring Boot分布式事务文章都会有所收获,下面我们一起来看看吧。 pom.xml中添加atomikos的springboot相关依赖:点进去会发现里面整合好了:transactions-jmstransactions-jtatransactions-jdbcjavax.transaction-api数据源的相关配置项单独提炼到一个application.yml中:注意:这回我们的spring.datasource.typecom.alibaba.druid.pool.xa.DruidXA免费云主机域名DataSource;spring.jta.transaction-manager-id的值在你的电脑中是唯一的,这个详细请阅读官方文档;完整的yml文件如下:在DruidConfig.java中实现多个数据源的注册;分布式事务管理器的注册;druid的注册分别配置每个数据源对应的sqlSessionFactory,以及MapperScan扫描的包MybatisDatasourceConfig.javaMybatisDatasource2Config.java由于我们本例中只使用一个事务管理器:xatx,故就不在使用TxAdviceInterceptor.javaTxAdvice2Interceptor.java中配置的事务管理器了;有需求的童鞋可以自己配置其他的事务管理器;(见DruidConfig.java中查看)新建分布式业务测试接口JtaTestService.java和实现类JtaTestServiceImpl.java其实就是一个很简单的test01()方法,在该方法中我们分别先后调用classService.saveOrUpdateTClass(tClass);teacherService.saveOrUpdateTeacher(teacher);实现先后操作两个数据源:然后我们可以自己debug跟踪事务的提交时机,此外,也可以在在两个方法全执行结束之后,手动制造一个运行时异常,来检查分布式事务是否全部回滚;注意:在实现类的方法中我使用的是:建立JtaTestContoller.java,接受一个来自前端的http请求,触发JtaTestService 的test01方法点击这个按钮,跳转到controller:当正常执行了sql语句之后,我们可以发现数据库并没有变化,因为整个方法的事务还没有走完,当我们走到1/0这步时:抛出运行时异常,并被spring事务拦截器拦截,并捕获异常:this.completeTransactionAfterThrowing(txInfo, var16);方法中会将事务全部回滚:22:09:04.243 logback [http-nio-8080-exec-5] INFO c.a.i.imp.CompositeTransactionImp – rollback() done of transaction 192.168.1.103.tm0000400006此时,当我们再次打开数据库验证,依旧没有变化,证明分布式事务配置成功。关于“怎么实现Java Spring Boot分布式事务”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么实现Java Spring Boot分布式事务”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注百云主机行业资讯频道。

相关推荐: vue怎么定义全局变量和全局方法

本篇内容介绍了“vue怎么定义全局变量和全局方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!定义一个专用模块来配置全局变量,然后通过export暴露出去,在需…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/06 12:25
下一篇 07/06 12:25

相关推荐