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

这是我项目的配置<spring-cloud.version>Hoxton.SR12</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.5.RELEASE</spring-cloud-alibaba.version>
        <alibaba.nacos.version>2.0.3</alibaba.nacos.version>
————————————————

我的现象:本地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, 然后打开,复制出来代码,在项目里建个类,考进去,按照原路径创建。就可以改了。)

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值