• seata no available service 'null' found, please make sure registry config correct


     最近学习seata的时候报了错误no available service 'null' found, please make sure registry config correct,服务名在配置文件中都有的,没办法只能跟源码了

    环境springcloud Hoxton.SR3 +Springboot 2.2.5.RELEASE+seata1.1+nacos1.4

    seata包下载太慢了,直接使用的编译版本1.2-SNAPSHOT

    本人遇到这个问题有两个原因

    1.没有使用官网的配置,直接拿的别人的配置文件导入的

    2.没有引入依赖引起

    下面看看原因

    报错的源码seata1.0

    io.seata.core.rpc.netty.NettyClientChannelManager#reconnect

    void reconnect(String transactionServiceGroup) {
            List<String> availList = null;
            try {
                availList = getAvailServerList(transactionServiceGroup);
            } catch (Exception e) {
                LOGGER.error("Failed to get available servers: {}", e.getMessage(), e);
                return;
            }
            if (CollectionUtils.isEmpty(availList)) {
                String serviceGroup = RegistryFactory.getInstance()
                                                     .getServiceGroup(transactionServiceGroup);
                LOGGER.error("no available service '{}' found, please make sure registry config correct", serviceGroup);
                return;
            }
            for (String serverAddress : availList) {
                try {
                    acquireChannel(serverAddress);
                } catch (Exception e) {
                    LOGGER.error("{} can not connect to {} cause:{}",FrameworkErrorCode.NetConnect.getErrCode(), serverAddress, e.getMessage(), e);
                }
            }
        }
    io.seata.discovery.registry.RegistryService#getServiceGroup
    String PREFIX_SERVICE_MAPPING = "vgroup_mapping.";
    /**
    * The constant PREFIX_SERVICE_ROOT.
    */
    String PREFIX_SERVICE_ROOT = "service";
    /**
    * The constant CONFIG_SPLIT_CHAR.
    */
    String CONFIG_SPLIT_CHAR = ".";
    default String getServiceGroup(String key) {
    Configuration config = ConfigurationFactory.getInstance();
    return config.getConfig(PREFIX_SERVICE_ROOT + CONFIG_SPLIT_CHAR + PREFIX_SERVICE_MAPPING + key);
    }

      上面红色部分就是根源所在,1.1版本之后

    vgroup_mapping改成vgroupMapping了
    所以大家在导入的seata配置的时候直接上源码下面的script目录下去找配置文件修改好了导入,1.1之后之前的nacos-config.txt也去掉了nacos

    nacos-config.sh在上面nacos目录中

    所以大家如果使用1.1版本以上的seata组名记得用

    vgroupMapping,1.0及之前的用vgroup_mapping,记得所有含有这个的都要一起改哦
    另外一个原因就是你的模块没有引入spring-cloud-alibaba-seata依赖引起的


    欢迎有兴趣的同学加入 513650703一起学习

  • 相关阅读:
    ViewPager+Fragmrnt最简单结合方法
    Microsoft SQL Server Version List(SQL Server 版本)
    hdu 2795 Billboard(线段树单点更新)
    面向对象程序设计的思想的长处
    iOS 友盟分享
    使用Broadcast实现android组件之间的通信
    jquery ui 分页插件 传入后台的连个參数名
    android adb常见问题的解决方法!
    UVa 11015
    优秀程序猿学习方法
  • 原文地址:https://www.cnblogs.com/javashare/p/12529434.html
Copyright © 2020-2023  润新知