最新在更新LCN,由4.0更新到了5.0,这里说说更新遇到的问题,官方在5.0.1版本开始兼容了springboot1.5版本,但是整合的时候还是需要注意一些问题。
1.maven的引包需要改变,本人使用的是最新的5.0.2版本
<-- 下面两个包的版本号最好与springboot版本一致,在txlcn-tc中,引入了这两个包,并且版本号为2.0.5,该操作用于覆盖2.0.5版本的包 -->
<dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-actuatorartifactId> <version>1.5.6.RELEASEversion> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-configuration-processorartifactId> <version>1.5.6.RELEASEversion> dependency>
<-- 官方文档给出的解决方案,txlcn-tc中引入的是2.0.5版本,要换成1.3.5版本 --> <dependency> <groupId>org.springframework.cloudgroupId> <artifactId>spring-cloud-commonsartifactId> <version>1.3.5.RELEASEversion> dependency> <dependency> <groupId>com.codingapi.txlcngroupId> <artifactId>txlcn-tcartifactId> <version>5.0.2.RELEASEversion> dependency> <dependency> <groupId>com.codingapi.txlcngroupId> <artifactId>txlcn-txmsg-nettyartifactId> <version>5.0.2.RELEASEversion> dependency>
2.代码需要做一些改变
a.启动类需要加上@EnableDistributedTransaction注解;
b.用到了分布式事务的方法上注解由@TxtTransaction改为@LcnTransaction,当然,还有txc、tcc和自定义的用法,具体可查看官方文档,这里就不赘述了。
3.到官方github上下载tx-lcn,并修改配置,只列出个人认为有用的配置,具体配置请查看官方文档
spring.application.name=tx-manager
#lcn5.0集成了管理页面,该端口为访问管理页面的端口 server.port=8899 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#lcn将异常事务日志存到了数据库中,需要建立tx-manager数据库,并在数据库中建立t_tx_exception表,sql文件可在txlcn-tm中找到 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/tx-manager?characterEncoding=UTF-8 spring.datasource.username=root spring.datasource.password=123456 # TxClient连接请求端口,官方文档说默认是8070端口,但测试发现,TxManagerConfig类中的port属性并没有设置默认值,所以不设置端口客户端会找不到tx-manager tx-lcn.manager.port=8070 #redis 主机,熟悉lcn的会知道,lcn将事务组信息存到了redis中 spring.redis.host=127.0.0.1 #redis 端口 spring.redis.port=5379 #redis 密码 spring.redis.password=123456
自此,springboot1.5.6和lcn5.0的整合完毕
问题:当然,现在5.0.2版本还是有些不足,比如客户端启动后如果找不到tx-manager,则只会重试8次,并且无法配置不限重试次数,也就是说tx-manager需要在客户端之前启动才比较稳妥。
个人认为最好能让客户端一直重试,这样如果lcn挂了,再启动时,不需要把客户端也重启。
解决这个问题本人目前是通过修改lcn的部分源码,下篇博客再做介绍。
总的来说,LCN5.0比4.0是很大的跨越,做了很多优化,也新增了很多功能,以下举例以下个人认为受益很大的优化
1、新增管理页面,通过管理页面可以看到连接tx-manager的客户端,也可以看到lcn管理范围下出现的异常事务;
2、解决4.0中客户端找不到tx-manager而启动失败的问题,5.0版本中,客户端启动时就算找不到tx-manager,依然不影响客户端的启动,只是使用了lcn的方法会报空指针异常,避免了因为lcn而影响了模块的其他功能。
3、新增了txc、tcc和自定义的事务模式,符合更多的业务场景(虽然本人目前只使用了lcn模式)