@SpringBoot引入Dubbo问题解析
问题描述
错误日志
java.lang.IllegalStateException: Failed to connect with zookeeper, pls check if url zookeeper://192.168.10.5:2181/ConfigCenterConfig?check=true&config-file=dubbo.properties&group=dubbo&highest-priority=true&include.spring.env=false&init.timeout=60000&namespace=dubbo&timeout=2500000 is correct.
at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfiguration.<init>(ZookeeperDynamicConfiguration.java:69) ~[dubbo-2.7.18.jar:2.7.18]
at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfigurationFactory.createDynamicConfiguration(ZookeeperDynamicConfigurationFactory.java:43) ~[dubbo-2.7.18.jar:2.7.18]
at org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory.lambda$getDynamicConfiguration$0(AbstractDynamicConfigurationFactory.java:39) ~[dubbo-2.7.18.jar:2.7.18]
at org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory$$Lambda$490/299783910.apply(Unknown Source) ~[na:na]
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) ~[na:1.8.0_31]
at org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory.getDynamicConfiguration(AbstractDynamicConfigurationFactory.java:39) ~[dubbo-2.7.18.jar:2.7.18]
at org.apache.dubbo.common.config.configcenter.DynamicConfiguration.getDynamicConfiguration(DynamicConfiguration.java:224) ~[dubbo-2.7.18.jar:2.7.18]
at org.apache.dubbo.config.bootstrap.DubboBootstrap.prepareEnvironment(DubboBootstrap.java:1025) ~[dubbo-2.7.18.jar:2.7.18]
at org.apache.dubbo.config.bootstrap.DubboBootstrap.startConfigCenter(DubboBootstrap.java:619) ~[dubbo-2.7.18.jar:2.7.18]
at org.apache.dubbo.config.bootstrap.DubboBootstrap.initialize(DubboBootstrap.java:521) ~[dubbo-2.7.18.jar:2.7.18]
at org.apache.dubbo.config.bootstrap.DubboBootstrap.start(DubboBootstrap.java:882) ~[dubbo-2.7.18.jar:2.7.18]
问题分析
本以为是配置问题,分析后不是:
spring:
application:
name: cyb-dubbo-provider
customer:
address: 192.168.10.5:2181
protocol: zookeeper
dubbo:
application:
name: ${spring.application.name}
protocol:
name: dubbo
port: 28080
registry:
id: zk-lch
timeout: 2500000
address: ${customer.address}
protocol: ${customer.protocol}
parameters:
blockUntilConnectedWait: 250
configCenter:
timeout: 2500000
address: ${customer.address}
protocol: ${customer.protocol}
parameters[init.timeout]: 60000
metadataReport:
address: ${customer.address}
protocol: ${customer.protocol}
scan:
base-packages: com.cyb.dubbo.provider.service.impl
又以为是服务问题,查看后不是:
还以为是依赖包问题,真是:
错误依赖:
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.18</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.8.0</version>
</dependency>
正确依赖:
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.18</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>5.3.0</version>
</dependency>
解决方案
升级依赖curator-recipes的版本至高版本,要与dubbo版本匹配!!!!