欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot+dubbo啟動(dòng)項(xiàng)目時(shí)報(bào)錯(cuò) zookeeper not connected的問(wèn)題及解決方案

 更新時(shí)間:2023年06月28日 10:32:57   作者:IccBoY  
這篇文章主要介紹了springboot+dubbo項(xiàng)目啟動(dòng)項(xiàng)目時(shí)報(bào)錯(cuò) zookeeper not connected的問(wèn)題,本文給大家定位問(wèn)題及解決方案,結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下

現(xiàn)象

項(xiàng)目在公司網(wǎng)絡(luò)啟動(dòng)時(shí),能正常啟動(dòng)。但通過(guò)vpn連接到公司網(wǎng)絡(luò)時(shí)卻無(wú)法啟動(dòng)報(bào)下面的錯(cuò)誤java.lang.IllegalStateException: zookeeper not connected。

Caused by: java.lang.IllegalStateException: zookeeper not connected
    at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.<init>(CuratorZookeeperClient.java:84)
    at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperTransporter.createZookeeperClient(CuratorZookeeperTransporter.java:26)
    at org.apache.dubbo.remoting.zookeeper.AbstractZookeeperTransporter.connect(AbstractZookeeperTransporter.java:68)
    at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfiguration.<init>(ZookeeperDynamicConfiguration.java:66)
    at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfigurationFactory.createDynamicConfiguration(ZookeeperDynamicConfigurationFactory.java:43)
    at org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory.lambda$getDynamicConfiguration$0(AbstractDynamicConfigurationFactory.java:39)
    at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
    at org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory.getDynamicConfiguration(AbstractDynamicConfigurationFactory.java:39)
    at org.apache.dubbo.common.config.configcenter.DynamicConfiguration.getDynamicConfiguration(DynamicConfiguration.java:224)
    at org.apache.dubbo.config.bootstrap.DubboBootstrap.prepareEnvironment(DubboBootstrap.java:1024)
    at org.apache.dubbo.config.bootstrap.DubboBootstrap.startConfigCenter(DubboBootstrap.java:619)
    at org.apache.dubbo.config.bootstrap.DubboBootstrap.initialize(DubboBootstrap.java:521)
    at org.apache.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:244)
    at org.apache.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:206)
    at org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.doGetInjectedBean(ReferenceAnnotationBeanPostProcessor.java:165)
    at com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor.getInjectedObject(AbstractAnnotationBeanPostProcessor.java:409)
    at com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor$AnnotatedFieldElement.inject(AbstractAnnotationBeanPostProcessor.java:626)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119)
    at com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor.postProcessPropertyValues(AbstractAnnotationBeanPostProcessor.java:179)
    ... 78 common frames omitted
Caused by: java.lang.IllegalStateException: zookeeper not connected
    at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.<init>(CuratorZookeeperClient.java:81)
    ... 96 common frames omitted
Disconnected from the target VM, address: '127.0.0.1:52979', transport: 'socket'

Process finished with exit code 1

猜測(cè):連接到zookeeper的服務(wù)器網(wǎng)絡(luò)策略不通— 通過(guò)telnet證實(shí)端口網(wǎng)絡(luò)時(shí)通的。該猜測(cè)不成立。

定位問(wèn)題

進(jìn)一步經(jīng)過(guò)報(bào)錯(cuò)的日志,找到對(duì)應(yīng)的源碼。

public class CuratorZookeeperClient extends AbstractZookeeperClient<CuratorZookeeperClient.NodeCacheListenerImpl, CuratorZookeeperClient.CuratorWatcherImpl> {
    protected static final Logger logger = LoggerFactory.getLogger(CuratorZookeeperClient.class);
    private static final String ZK_SESSION_EXPIRE_KEY = "zk.session.expire";
    static final Charset CHARSET = StandardCharsets.UTF_8;
    private final CuratorFramework client;
    private static Map<String, NodeCache> nodeCacheMap = new ConcurrentHashMap<>();
    public CuratorZookeeperClient(URL url) {
        super(url);
        try {
            int timeout = url.getParameter(TIMEOUT_KEY, DEFAULT_CONNECTION_TIMEOUT_MS);
            int sessionExpireMs = url.getParameter(ZK_SESSION_EXPIRE_KEY, DEFAULT_SESSION_TIMEOUT_MS);
            CuratorFrameworkFactory.Builder builder = CuratorFrameworkFactory.builder()
                    .connectString(url.getBackupAddress())
                    .retryPolicy(new RetryNTimes(1, 1000))
                    .connectionTimeoutMs(timeout)
                    .sessionTimeoutMs(sessionExpireMs);
            String authority = url.getAuthority();
            if (authority != null && authority.length() > 0) {
                builder = builder.authorization("digest", authority.getBytes());
            }
            client = builder.build();
            client.getConnectionStateListenable().addListener(new CuratorConnectionStateListener(url));
            client.start();
            boolean connected = client.blockUntilConnected(timeout, TimeUnit.MILLISECONDS);
            if (!connected) {
                throw new IllegalStateException("zookeeper not connected");
            }
        } catch (Exception e) {
            throw new IllegalStateException(e.getMessage(), e);
        }
    }

可以看出 是 boolean connected = client.blockUntilConnected(timeout, TimeUnit.MILLISECONDS); 這里 connected 返回了fasle導(dǎo)致的問(wèn)題。然后下端點(diǎn), 發(fā)現(xiàn)timeout = 3000 ,也就說(shuō)3秒內(nèi)需要鏈接成功,否則就會(huì)超時(shí)。

推測(cè)由于vpn的方式連接的 zk服務(wù)器,很有可能是 3秒內(nèi)沒(méi)有得到服務(wù)端的正確響應(yīng),而導(dǎo)致了異常,然后拋出了異常。

基于上的推測(cè),將該timeout的默認(rèn)值3000改大一些后,然后就啟動(dòng)成功了。

解決

修改dubbo的配置,下面是springboot的項(xiàng)目,修改的方式。從上面的報(bào)錯(cuò)信息是可以看出是 configcenter的連接超時(shí)。下面配置了三個(gè)配置的超時(shí)時(shí)間,可根據(jù)情況進(jìn)行配置。

dubbo:
  config-center:
    timeout: 10000
  metadata-report:
    timeout: 10000
  registry:
    timeout: 10000

到此這篇關(guān)于springboot+dubbo項(xiàng)目啟動(dòng)項(xiàng)目時(shí)報(bào)錯(cuò) zookeeper not connected的文章就介紹到這了,更多相關(guān)springboot+dubbo啟動(dòng)項(xiàng)目報(bào)錯(cuò) zookeeper not connected內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用SpringSecurity處理CSRF攻擊的方法步驟

    使用SpringSecurity處理CSRF攻擊的方法步驟

    這篇文章主要介紹了使用SpringSecurity處理CSRF攻擊的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • Spring 與 JDK 線程池的簡(jiǎn)單使用示例詳解

    Spring 與 JDK 線程池的簡(jiǎn)單使用示例詳解

    這篇文章主要介紹了Spring 與 JDK 線程池的簡(jiǎn)單使用,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • sharding-jdbc中的事務(wù)詳細(xì)解讀

    sharding-jdbc中的事務(wù)詳細(xì)解讀

    這篇文章主要介紹了sharding-jdbc中的事務(wù)詳細(xì)解讀,sharding-jdbc在分庫(kù)分表方面提供了很大的便利性,在使用DB的時(shí)候,通常都會(huì)涉及到事務(wù)這個(gè)概念,而在分庫(kù)分表的環(huán)境上再加上事務(wù),就會(huì)使事情變得復(fù)雜起來(lái),需要的朋友可以參考下
    2023-12-12
  • spring中對(duì)象注入的三種實(shí)現(xiàn)方式

    spring中對(duì)象注入的三種實(shí)現(xiàn)方式

    本文主要介紹了spring中對(duì)象注入的三種實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Java String中移除空白字符的多種方式匯總

    Java String中移除空白字符的多種方式匯總

    這篇文章主要給大家介紹了關(guān)于Java String中移除空白字符的多種方式,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 這一次搞懂Spring事務(wù)注解的解析方式

    這一次搞懂Spring事務(wù)注解的解析方式

    這篇文章主要介紹了這一次搞懂Spring事務(wù)注解的解析方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • 深入理解Java中的并發(fā)工具類CountDownLatch

    深入理解Java中的并發(fā)工具類CountDownLatch

    CountDownLatch?作為?Java?中的一個(gè)同步工具類,用于在多線程間實(shí)現(xiàn)協(xié)調(diào)和控制,本文主要來(lái)和大家講解一下JUC?工具類?CountDownLatch的使用,需要的可以參考一下
    2023-07-07
  • java中json-diff簡(jiǎn)單使用及對(duì)象是否一致詳解

    java中json-diff簡(jiǎn)單使用及對(duì)象是否一致詳解

    這篇文章主要為大家介紹了java中json-diff簡(jiǎn)單使用及對(duì)象是否一致對(duì)比詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • java中使用interrupt通知線程停止詳析

    java中使用interrupt通知線程停止詳析

    這篇文章主要介紹了java中使用interrupt通知線程停止詳析,文章介紹的是使用interrupt來(lái)通知線程停止運(yùn)行,而不是強(qiáng)制停止,詳細(xì)內(nèi)容需要的小伙伴可以參考一下
    2022-09-09
  • Springcloud實(shí)現(xiàn)服務(wù)多版本控制的示例代碼

    Springcloud實(shí)現(xiàn)服務(wù)多版本控制的示例代碼

    這篇文章主要介紹了Springcloud實(shí)現(xiàn)服務(wù)多版本控制的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評(píng)論