Lcn分布式事务与Feign的集成实践
Lcn分布式事务同时兼容oracle,mysql,sqlserver
说明:
本次集成采用了开源的lcn框架,需要单独启动一个tx-manager的事务管理器,在事务发生的服务当中引入需要的依赖。
一.Tx-manager事务管理器
封装好的jar包,还有配置文件,放到和jar同级目录,修改相应的配置为自己的配置即可。然后启动。Jar会随文档进行打包发送
配置文件如下图示
二.服务调用实例包括各个文件的代码和配置
调用方总体目录结构
注:这是实例的目录结构实际开发中按照自己项目进行注释的添加即可。实例会随文档赠送
DemoController
注:此类没有特殊的地方,普通的controller
Dao
注:普通的接口类无特殊
Entity
注:普通实体类,无特殊地方
MyConfiguration
注:这个类要特别注意,他出现在调用方的服务当中,是一个拦截器,利用了aop的方式和resttemplate的方法实现的跨服务的拦截。必须要有的一个。
Txtransactioninterceptor
注:这个类也是必须要有的,下面的拦截地址可以更具自己的项目方法地址进行配置,其他的一样即可
Demo2client
注:要调用的服务的接口,通过feignclient进行调用,value为要调用的服务的名称,configuration为我们上面定义的MyConfiguration
DemoService
注:无特殊之处,普通的接口类
DemoServiceImpl
注:需要在我们的调用不同服务的方法上面增加俩个事务注解@Transaction和@TxTransaction分别代表开启本地事务和分布式事务,因为LCN的原理就是协调服务间的事务进行异常回滚,所以一定要开启本地事务
微服务的启动类
注:增加@EnableAutoConfiguration、@EnableFeignClients、和EnableEurekaClient。并且要在启动类中加入图中的俩个方法,可从随附代码中拷贝
配置文件
注:基本的数据库及注册中心等配置
注:配置tx-manager的地址和数据库的类型
被调用方
如果说这个被调用方还有要调用其他的服务那就和上面的项目一样进行配置,注意点也是一样,如果没有则不需要上面的client配置和MyConfiguration的配置。