目录
描述
今天是要springcloud alibaba 的时候,在使用API gateway的时候。发现nacos出现了一些问题
如下,,,整了大半天也没解决,真叫人头大。
2021-09-27 10:11:14.265 ERROR 2157 --- [-localhost_8848] c.a.n.client.config.impl.ClientWorker : longPolling error :
java.net.ConnectException: [NACOS HTTP-POST] The maximum number of tolerable server reconnection errors has been reached
at com.alibaba.nacos.client.config.http.ServerHttpAgent.httpPost(ServerHttpAgent.java:170) ~[nacos-client-1.2.1.jar:na]
at com.alibaba.nacos.client.config.http.MetricsHttpAgent.httpPost(MetricsHttpAgent.java:64) ~[nacos-client-1.2.1.jar:na]
at com.alibaba.nacos.client.config.impl.ClientWorker.checkUpdateConfigStr(ClientWorker.java:386) ~[nacos-client-1.2.1.jar:na]
at com.alibaba.nacos.client.config.impl.ClientWorker.checkUpdateDataIds(ClientWorker.java:354) ~[nacos-client-1.2.1.jar:na]
at com.alibaba.nacos.client.config.impl.ClientWorker$LongPollingRunnable.run(ClientWorker.java:521) ~[nacos-client-1.2.1.jar:na]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_271]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_271]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_271]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_271]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_271]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_271]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_271]
后来经过大佬的指点终于解决了这个问题。
原因
出现此错误的原因是我在项目的pom文件依赖了nacos-config,但是有没有创建一个boostrap的文件
解决
一种是将依赖给注释掉
<!--配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
另一种是创建一个boostrap.yml的文件
bootstrap.yml也是用来加载配置文件的
applicaiton.yml是用户级的资源配置项
bootstrap.yml是系统级的,优先级更加高
分析
Spring Cloud会创建一个“Bootstrap Context”,作为Spring应用的Application Context
的父上下文。初始化的时候,Bootstrap Context
负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的Environment
。Bootstrap
属性有高优先级,默认情况下,它们不会被本地配置覆盖。 Bootstrap context
和Application Context
有着不同的约定,所以新增了一个bootstrap.yml
文件,保证Bootstrap Context
和Application Context
配置的分离。