springboot2.x集成lcn5.0.2分布式事务

springboot2.x集成lcn5.0.2分布式事务

本地运行tx_manager

1.前往github拉取LCN

2.修改txlcn-tm中的配置文件

spring.application.name=TransactionManager
server.port=7970
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/tx-manager?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto=update



#TxManager Ip,默认为127.0.0.1
tx-lcn.manager.host=127.0.0.1
#TM监听scoket端口,默认为8070
tx-lcn.manager.port=8070
#TM后台登录密码
tx-lcn.manager.admin-key=123456

#心跳检测时间(ms)
tx-lcn.manager.heart-time=15000
#分布式事务执行总时间(ms)
tx-lcn.manager.dtx-time=30000
#参数延迟删除时间ms
tx-lcn.message.netty.attr-delay-time=10000
#事务处理并发等级,默认为机器核心数5倍
tx-lcn.manager.concurrent-level=150

#redis地址
spring.redis.host=127.0.0.1
#redis端口
spring.redis.port=6379
#redis密码
spring.redis.password=123456

#是否启用日志
tx-lcn.logger.enabled=true
#设置日志级别
logging.level.com.codingapi=debug

# 雪花算法的sequence位长度,默认为12位
tx-lcn.manager.seq-len=12

# 异常回调开关。开启时请制定ex-url
tx-lcn.manager.ex-url-enabled=false

# 事务异常通知(任何http协议地址。未指定协议时,为TM提供内置功能接口)。默认是邮件通知
tx-lcn.manager.ex-url=/provider/email-to/zouhonguser@163.com


3.修改pom文件将docker打包文件注释掉,用maven构建

	#取消打包测试
    	   <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18.1</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
	#springboot打包
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

4.启动项目

启动项目之后可在 http://127.0.0.1:7970/ 进行登录 密码在配置文件中进行配置

springcloud整合LCN 客户端集成

1.pom.xml引入依赖

	<!-- lcn -->
        <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>

        <!-- feign客户端依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
            <version>2.2.2.RELEASE</version>
            <!--<scope>test</scope>-->
        </dependency>

        <!--hystrix依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>

2.进行配置 在配置文件中加上tx-lcn的配置

# lcn事务
tx-lcn.client.manager-address=127.0.0.1:8070
tx-lcn.springcloud.loadbalance.enabled=true
在启动类上加上@EnableDistributedTransaction//开启LCN分布式事务注解
调用方打上@LcnTransaction 分布式事务注解
    @LcnTransaction
    @Transactional(rollbackFor = Exception.class)
    public String testSave(String id) {

        userMapper.saveInfo(id);
	//feign调用服务
        String r = clientTwoFeign.test(id);
        return  r;
    }
被调用方方法也要打上@LcnTransaction

特别注意:无论是调用方,还是被调用方,都需要设置开启分布式事务,如果有任何一方不开启,则分布式事务不生效

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » springboot2.x集成lcn5.0.2分布式事务