spring boot 1.5.6版本整合LCN5.0


最新在更新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.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> <version>1.5.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <version>1.5.6.RELEASE</version> </dependency>
    <-- 官方文檔給出的解決方案,txlcn-tc中引入的是2.0.5版本,要換成1.3.5版本 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-commons</artifactId> <version>1.3.5.RELEASE</version> </dependency> <dependency> <groupId>com.codingapi.txlcn</groupId> <artifactId>txlcn-tc</artifactId> <version>5.0.2.RELEASE</version> </dependency> <dependency> <groupId>com.codingapi.txlcn</groupId> <artifactId>txlcn-txmsg-netty</artifactId> <version>5.0.2.RELEASE</version> </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模式)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM