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

你可能感兴趣的:(springcloud,java,开发语言)