LCN 5.0.2版本修改tx-client不配置tx-manager地址,改从redis主动拉取

1. 取消TxClientConfig的自动配置

2. TCAutoConfiguration修改

package com.codingapi.txlcn.tc;

import com.codingapi.txlcn.common.exception.TxClientException;
import com.codingapi.txlcn.common.runner.TxLcnApplicationRunner;
import com.codingapi.txlcn.common.util.ApplicationInformation;
import com.codingapi.txlcn.common.util.id.ModIdProvider;
import com.codingapi.txlcn.logger.TxLoggerConfiguration;
import com.codingapi.txlcn.tc.config.EnableDistributedTransaction;
import com.codingapi.txlcn.tc.config.TxClientConfig;
import com.codingapi.txlcn.tracing.TracingAutoConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.*;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.util.CollectionUtils;

import java.util.List;
import java.util.stream.Collectors;

/**
 * Description:
 * Date: 1/19/19
 *
 * @author ujued
 * @see EnableDistributedTransaction
 */
@Configuration
@ComponentScan(
        excludeFilters = @ComponentScan.Filter(
                type = FilterType.ASPECTJ, pattern = "com.codingapi.txlcn.tc.core.transaction.txc..*"
        )
)
@Import({TxLoggerConfiguration.class, TracingAutoConfiguration.class})
public class TCAutoConfiguration {

    private static final String REDIS_TM_LIST = "tm.instances";

    /**
     * All initialization about TX-LCN
     *
     * @param applicationContext Spring ApplicationContext
     * @return TX-LCN custom runner
     */
    @Bean
    public ApplicationRunner txLcnApplicationRunner(ApplicationContext applicationContext) {
        return new TxLcnApplicationRunner(applicationContext);
    }

    @Bean
    @ConditionalOnMissingBean
    public ModIdProvider modIdProvider(ConfigurableEnvironment environment,
                                       @Autowired(required = false) ServerProperties serverProperties) {
        return () -> ApplicationInformation.modId(environment, serverProperties);
    }

    @Bean
    @ConfigurationProperties(prefix = "tx-lcn.client")
    public TxClientConfig txClientConfig(@Autowired StringRedisTemplate stringRedisTemplate) throws TxClientException {
        TxClientConfig txClientConfig = new TxClientConfig();

        List<String> managerAddress = stringRedisTemplate.opsForHash().entries(REDIS_TM_LIST).entrySet().stream()
                .map(entry -> entry.getKey().toString()).collect(Collectors.toList());

        if(CollectionUtils.isEmpty(managerAddress)){
            throw new TxClientException("在redis没有找到可用的tx-manager地址");
        }

        txClientConfig.setManagerAddress(managerAddress);

        return txClientConfig;
    }
}
TCAutoConfiguration




原文地址:https://www.cnblogs.com/yizhishang/p/10647269.html

时间: 2024-10-30 06:39:30

LCN 5.0.2版本修改tx-client不配置tx-manager地址,改从redis主动拉取的相关文章

linux下storm(0.9版本以上)的环境配置和小Demo

一.引言: 在storm发布到0.9.x以后,配置storm将会变得简单很多,也就是只需要配置zookeeper和storm即可,而不再需要配置zeromq和jzmq,由于网上面的storm配置绝大部分都是0.9以前的storm版本,所以有很多工作是不需要进行的,下面就storm的0.9.5版本在linux环境下进行配置进行详细解析. 由于配置storm只需要两个步骤,大大简化了配置,也是storm团队做了很大的努力,让程序员们专注于程序,让storm配置进行异常简单,好了,废话说了不少,下面正

Android Studio 3.1.2 修改字体(font)大小(size) 及老版本修改主题、字体、颜色 参照地址

Android Studio 3.1.2  修改字体(font)大小(size) 步骤:File-Settings-Editor-Color Scheme-Color Scheme Font-Size 图片:         老版本as修改主题.字体.颜色 参照地址: https://blog.csdn.net/bangyiqing/article/details/52241746 原文地址:https://www.cnblogs.com/1502720115chenzhen/p/9063176

GitLab ce 社区版本修改成mysql方式配置(yum)

Gitlab数据库换成mysql数据库 先安装Mysql 我这里是测试就用Yum安装了 5.6的 编辑yum.repo [mysql56-community] name=MySQL 5.6Community Server baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/ enabled=1 gpgcheck=0 保存后直接运行 yum installmysql-community-server  –y 安装

socket.io获取客户端的IP地址(修正官方1.0.4版本BUG)

之前我有看过别人写的文章,说到如何获取客户端IP地址,代码如下: var io = require("socket.io").listen(server); io.sockets.on("connection", function (socket) { var address = socket.handshake.address; console.log("New connection from " + address.address + &qu

MongoDBV3.0.7版本(shard+replica)集群的搭建及验证

集群的模块介绍: 从MongoDB官方给的集群架构了解,整个集群主要有4个模块:Config Server.mongs. shard.replica set: Config Server:用来存放集群的元数据,也就是存放所有分片的的配置数据,mongos第一次启动就需要连接configServer读取相关数据,当configServer有数据进行更新时,也会主动推送消息到所有的mongos上,在3.0.7版本中,官方是建议配置3份的Config Server,以便挂掉两台时,业务还能够正常运转.

Mysql 8.0.* zip版本 windows安装

一,MySQL8.0.*zip版本安装步骤. 1,下载 https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.15-winx64.zip 注现在最新的版本是8.0.15 2,解压 将mysql-8.0.15-winx64.zip解压到 D:/mysql 目录下 3,打开cmd命令控制台,输入以下命令. d: cd\ cd mysql cd bin d:\mysql\bin>mysqld --initialize-insecure     

Kafka 0.11版本新功能介绍 —— 空消费组延时rebalance

在0.11之前的版本中,多个consumer实例加入到一个空消费组将导致多次的rebalance,这是由于每个consumer instance启动的时间不可控,很有可能超出coordinator确定的rebalance timeout(即max.poll.interval.ms),而每次rebalance的代价又相当地大,因为很多状态都需要在rebalance前被持久化,而在rebalance后被重新初始化.曾经有个国外用户,他有100个consumer,每次rebalance的时间甚至要1个

INNO SETUP 5.5.0以上版本中文语言包

1 ; *** Inno Setup version 5.5.0+ Chinese messages *** 2 ; 3 ; To download user-contributed translations of this file, go to: 4 ; http://www.jrsoftware.org/is3rdparty.php 5 ; 6 ; Note: When translating this text, do not add periods (.) to the end of

.NET Framework 1.1、2.0、3.0、3.5、4.0各版本新增功能

一..NET Framework 1.1版本 1.ASP.NET移动控件 2.ADO.NET的改动 添加System.Data.Odbc命名空间 新增System.Data.OracleClient命名空间供Oracle使用 DataReader对象公开HasRows属性,判断是否有返回行 Connection对象具有EnlistDistributedTransaction,可以在分布式事务中启动手动登记. 3.并发执行 .NET Framework 1.1版本支持并行执行. 4..NET Fr