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模式)

原文地址:https://www.cnblogs.com/jagerLan/p/10605670.html

时间: 2024-11-29 09:03:05

spring boot 1.5.6版本整合LCN5.0的相关文章

Spring Boot 2.X 如何快速整合jpa?

本文目录 一.JPA介绍二.Spring Data JPA类结构图1.类的结构关系图三.代码实现1.添加对应的Starter2.添加连接数据库的配置3.主要代码 一.JPA介绍 JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.SpringData是Spring的一个子项目.用于简化数据库访问,支持NoSQL和关系数据存储,其主要目标是使数据库的访问变得方便快捷.Spr

Spring Boot的简介与idea整合jsp

一.Spring Boot简介 SpringBoot是一个框架,他的产生简化了框架的使用,所谓简化是指简化了Spring众多框架中所需的大量且繁琐的配置文件.它使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来.使用Spring Boot很容易创建一个独立运行(运行jar,内嵌Servlet容器).准生产级别的基于Spring框架的项目,使用Spring Boot你可以不用或者只需要很少的Spring配置. SpringB

spring boot 与 shiro的简单整合使用

shrio官网:https://shiro.apache.org/ Apache Shiro是一个功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理.借助Shiro易于理解的API,您可以快速轻松地保护任何应用程序 - 从最小的移动应用程序到最大的Web和企业应用程序.spring中也有自带的安全框架spring security.shrio是通过对其的再封装,实现了自己的一套全新架构. 正巧spring boot项目中也需要用到用户的身份验证以及权限控制,本来想用AOP

001-Spring Cloud Edgware.SR3 升级最新 Finchley.SR1,spring boot 1.5.9.RELEASE 升级2.0.4.RELEASE注意问题点

一.前提 升级前 => 升级后 Spring Boot 1.5.x => Spring Boot 2.0.4.RELEASE Spring Cloud Edgware SR3 => Spring Cloud Finchley.SR1 1.1.Eureka Server ureka Server 依赖更新 升级前: <dependency> <groupId>org.springframework.cloud</groupId> <artifact

Gradle 如何打包 Spring Boot 如何不添加版本代码

在 Gradle 中如何在打包的 Jar 中不包含版本代码? 在 bootJar 中,使用下面的代码进行打包不包含版本代码. archiveFileName = "${archiveBaseName.get()}.${archiveExtension.get()}" 上面的代码将不会打包版本号码 完整的代码如下: bootJar { archiveFileName = "${archiveBaseName.get()}.${archiveExtension.get()}&qu

Spring Boot:整合MyBatis框架

综合概述 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型.接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录.MyBatis是一款半ORM框架,相对于Hibernate这样的完全ORM框架,MyBatis显得更加灵活,因为可以直接控制SQL语句,所

通过Spring Boot整合Mybatis分析自动配置详解

前言 SpringBoot凭借"约定大于配置"的理念,已经成为最流行的web开发框架,所以有必须对其进行深入的了解:本文通过整合Mybatis类来分析SpringBoot提供的自动配置(AutoConfigure)功能,在此之前首先看一个整合Mybatis的实例. SpringBoot整合Mybatis 提供SpringBoot整合Mybatis的实例,通过Mybatis实现简单的增删改查功能: 1.表数据 CREATE TABLE `role` (  `note` varchar(2

spring boot整合JMS(ActiveMQ实现)

一.安装ActiveMQ 具体的安装步骤,请参考我的另一篇博文: http://blog.csdn.net/liuchuanhong1/article/details/52057711 二.新建spring boot工程,并加入JMS(ActiveMQ)依赖 三.工程结构 pom依赖如下: [html] view plain copy <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&qu

Spring Boot 2.X整合Spring-cache,让你的网站速度飞起来

计算机领域有人说过一句名言:“计算机科学领域的任何问题都可以通过增加一个中间层来解决”,今天我们就用Spring-cache给网站添加一层缓存,让你的网站速度飞起来. 本文目录 一.Spring Cache介绍二.缓存注解介绍三.Spring Boot+Cache实战1.pom.xml引入jar包2.启动类添加@EnableCaching注解3.配置数据库和redis连接4.配置CacheManager5.使用缓存注解6.查看缓存效果7.注意事项 一.Spring Cache介绍 Spring