Dubbo連線Zookeeer:zookeeper not connected
阿新 • • 發佈:2021-01-08
Dubbo連線Zookeeer:zookeeper not connected
首先,貼出報錯問題
Exception in thread "main" java.lang.IllegalStateException: zookeeper not connected at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.<init>(CuratorZookeeperClient.java:83) at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperTransporter.createZookeeperClient(CuratorZookeeperTransporter.java:26) at org.apache.dubbo.remoting.zookeeper.support.AbstractZookeeperTransporter.connect(AbstractZookeeperTransporter.java:68) at org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter$Adaptive.connect(ZookeeperTransporter$Adaptive.java) at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfiguration.<init>(ZookeeperDynamicConfiguration.java:70) at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfigurationFactory.createDynamicConfiguration(ZookeeperDynamicConfigurationFactory.java:37) at org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory.lambda$getDynamicConfiguration$0(AbstractDynamicConfigurationFactory.java:39) at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) at org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory.getDynamicConfiguration(AbstractDynamicConfigurationFactory.java:39) at org.apache.dubbo.common.config.configcenter.DynamicConfiguration.getDynamicConfiguration(DynamicConfiguration.java:223) at org.apache.dubbo.config.bootstrap.DubboBootstrap.prepareEnvironment(DubboBootstrap.java:815) at org.apache.dubbo.config.bootstrap.DubboBootstrap.startConfigCenter(DubboBootstrap.java:560) at org.apache.dubbo.config.bootstrap.DubboBootstrap.useRegistryAsConfigCenterIfNecessary(DubboBootstrap.java:624) at org.apache.dubbo.config.bootstrap.DubboBootstrap.initialize(DubboBootstrap.java:508) at org.apache.dubbo.config.bootstrap.DubboBootstrap.start(DubboBootstrap.java:698) at org.apache.dubbo.config.spring.context.DubboBootstrapApplicationListener.onContextRefreshedEvent(DubboBootstrapApplicationListener.java:52) at org.apache.dubbo.config.spring.context.DubboBootstrapApplicationListener.onApplicationContextEvent(DubboBootstrapApplicationListener.java:45) at org.apache.dubbo.config.spring.context.OneTimeExecutionApplicationContextEventListener.onApplicationEvent(OneTimeExecutionApplicationContextEventListener.java:40) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) Disconnected from the target VM, address: '127.0.0.1:51893', transport: 'socket' at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347) at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:883) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546) at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:84) at com.lagou.DubboPureMain.main(DubboPureMain.java:21) Caused by: java.lang.IllegalStateException: zookeeper not connected at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.<init>(CuratorZookeeperClient.java:80) ... 26 more Exception in thread "DubboShutdownHook" java.lang.RuntimeException: java.lang.NullPointerException at org.apache.dubbo.common.function.ThrowableAction.execute(ThrowableAction.java:48) at org.apache.dubbo.common.lang.ShutdownHookCallbacks.lambda$callback$0(ShutdownHookCallbacks.java:70) at java.lang.Iterable.forEach(Iterable.java:75) at org.apache.dubbo.common.lang.ShutdownHookCallbacks.callback(ShutdownHookCallbacks.java:70) at org.apache.dubbo.config.DubboShutdownHook.callback(DubboShutdownHook.java:81) at org.apache.dubbo.config.DubboShutdownHook.run(DubboShutdownHook.java:69) Caused by: java.lang.NullPointerException at org.apache.dubbo.config.bootstrap.DubboBootstrap.unexportMetadataService(DubboBootstrap.java:857) at org.apache.dubbo.config.bootstrap.DubboBootstrap.destroy(DubboBootstrap.java:996) at org.apache.dubbo.config.bootstrap.DubboBootstrap$1.callback(DubboBootstrap.java:190) at org.apache.dubbo.common.function.ThrowableAction.execute(ThrowableAction.java:46) ... 5 more
可以看出,zookeeper連線不上,但是伺服器的zk明明以及啟動
並且用zkClient或者其他API方式都可以正常連線zk,很納悶!!!
這是本地的dubbo連線zk的程式碼
public static void main(String[] args) throws Exception{ // 啟動環境,基於標註的上下文環境 AnnotationConfigApplicationContext AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ProviderConfiguration.class); context.start(); System.in.read(); } @Configuration @EnableDubbo(scanBasePackages = "com.lagou.service.impl") @PropertySource("classpath:/dubbo-provider.properties") static class ProviderConfiguration{ @Bean public RegistryConfig registryConfig(){ RegistryConfig registryConfig = new RegistryConfig(); registryConfig.setAddress("zookeeper://本地虛擬機器地址:2181"); return registryConfig; } }
dubbo的配置檔案如下:
dubbo.application.name=service-provider
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
後來經過查詢資料,找到問題原因所在,因為zk的超時連線設定,
解決方案如下:
1. 呼叫本地的zk註冊中心
2. 調整zk的超時連線時間,如下:我是這樣解決的,在dubbo配置檔案中修改zk的連線超時時間
3.
配置檔案修改為如下:問題解決
dubbo.application.name=service-provider dubbo.protocol.name=dubbo dubbo.protocol.port=20880 dubbo.config-center.timeout=6000
希望可以幫助到你!