栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

nacos作为配置中心获取不到配置

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

nacos作为配置中心获取不到配置

这是我项目的配置Hoxton.SR12
        2.2.5.RELEASE
        2.0.3
————————————————

我的现象:本地eclpse 启动或者jar启动都没问题;linux服务器,有的可以有的不行。就是找不到nacos上的配置文件。(不想看我啰嗦的直接看最下黑体部分)。


继上两个帖子之后,我一直在看nacos-client源码,2.x之后是用了rpc。读不到配置是因为RpcClient currentConnection这个初始化没有成功,是个null。

在启动项目过程中,会有一个线程读取配置,还有个线程去负责生成rpc链接相关东西。rpcclient类中start方法中有段代码:

 int startUpRetryTimes = RETRY_TIMES;
        while (startUpRetryTimes > 0 && connectToServer == null) {
            try {
                startUpRetryTimes--;
                ServerInfo serverInfo = nextRpcServer();
                
                LoggerUtils.printIfInfoEnabled(LOGGER, "[{}] Try to connect to server on start up, server: {}", name,
                        serverInfo);
                
                connectToServer = connectToServer(serverInfo);
            } catch (Throwable e) {
                LoggerUtils.printIfWarnEnabled(LOGGER,
                        "[{}]Fail to connect to server on start up, error message={}, start up retry times left: {}",
                        name, e.getMessage(), startUpRetryTimes);
            }
            
        }

这段代码就是重试获取rpc链接,默认RETRY_TIMES是3. 不知道自己电脑无论是eclipse还是打jar运行jar,在重试三次过程中都能获取到链接,但是放服务器上3次就不行,这是为啥呢?

最后一个做底层语言的同事找到原因,因为服务器上配置了dns,项目启动的时候会连这玩意,这里会导致浪费时间,所以在试了3次时还没创建好连接。下面解决方案。

解决办法两种:

动服务器配置。1 将项目所在服务器中/etc/hosts中加入127.0.0.1 aaa,aaa是你机器的名称;2或者vim /etc/resolv.conf 注释掉里面dns。这里要感谢大坤同志。

改源码。可以调整重试次数,大一点,反正connectToServer不null就结束了;或者直接加sleep。(eclpse项目 maven dependencies中找到nacos-common包找到com.alibaba.nacos.common.remote.client.RpcClient, 然后打开,复制出来代码,在项目里建个类,考进去,按照原路径创建。就可以改了。)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031242.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号