springboot 集成dubbo问题

一、背景

   基于springboot 2.3.5.RELEASE 和 dubbo-spring-boot-starter 2.7.5 的版本开发,用来总结自己的技术栈。在启动过程中遇到一些问题,故借此文章总结记录一下自己的解决思路。

二、问题集合

  1、 java.lang.IllegalStateException: No registry config found or it's not a valid config! The registry config is: <dubbo:registry valid="false" prefix="dubbo.registry" />

    对于这些含有  ...Config的问题,一般都跟配置有关。解决思路如下:

   1)、项目紧迫的情况下可以直接百度报错的提示,看看前辈总结的经验(问题不是你的专属)。

   2)、根据报错提示,点击 checkRegistry(AbstractInterfaceConfig.java:177)  ,如下图所示,找到 registryConfig.isValid() ,打上断点,开启debugger,发现  RegistryConfig  这个类的属性为空,继续点击AbstractConfig 可以看到dubbo的配置方式:

dubbo-spring-boot-starter 2.7.5 高版本不在以 spring.dubbo为前缀,改成直接以 dubbo为前缀的配置,如下所示

spring.dubbo.registry.id = gc-dubbo-registry   改为  dubbo.registry.id = gc-dubbo-registry

2)、java.lang.IllegalStateException: Invalid name="org.apache.dubbo.config.ApplicationConfig#0" contains illegal character, only digit, letter, '-', '_' or '.' is legal.

   方案:还是跟配置有关,注意相关dubbo的配置方式。比如:

   dubbo.application.name=your-need-name

   dubbo.application.id=xxx

  链接: 混合配置导致的Invalid name="org.apache.dubbo.config.ApplicationConfig#0"问题 #6202

3)、KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss

 解决方案:

  A、查看zookeeper的机子是否可以连接,连接超时等情况。具体可以参考 zookeeper连接异常处理

  B、dubbo版本与zookeeper版本问题或者项目少引入 zookeeper的依赖包。此处涉及的完整包如下:

 <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.5</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.2.0</version>
        </dependency>

      <!-- dubbo所需其他依赖 使用alibaba的dubbo则不需要 -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.2.0</version>
        </dependency>

        <!-- zookeeper依赖 -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.7</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

4)、其他问题

java.lang.NoClassDefFoundError: org/apache/curator/framework/recipes/cache/TreeCacheListener

少了 curator-recipes  这个包

 <!-- dubbo所需其他依赖 使用alibaba的dubbo则不需要 -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.2.0</version>
        </dependency>

org.apache.zookeeper.KeeperException$UnimplementedException: KeeperErrorCode = Unimplemented for /dubbo/com.allen.dubbo.api.CostService/providers/dubbo%3A%2F%2F10.0.0.104%3A30003%2Fcom.allen.dubbo.api.CostService%3Fanyhost%3Dtrue%26application%3Dgc-dubbo-provider%26deprecated%3Dfalse%26dubbo%3D2.0.2%26dynamic%3Dtrue%26generic%3Dfalse%26interface%3Dcom.allen.dubbo.api.CostService%26methods%3Dadd%26pid%3D20708%26release%3D2.7.5%26side%3Dprovider%26timeout%3D10000%26timestamp%3D1617239293620

按着 3) 的包可以解决此问题

 

项目地址:https://github.com/krycai/gc-framework/tree/master/gc-dubbo


 

猜你喜欢

转载自blog.csdn.net/baidu_28068985/article/details/115366468