问题描述:spring cloud 远程仓库配置文件(yml或properties)中有server.port参数就无法访问,这是一个大坑吗?
1.远程仓库文件:


2.ms-config-client的配置:
application.yml
server:
port: 8010
bootstrap.yml
spring:
cloud:
config:
uri: http://localhost:8009
profile: pre
label: master # 当configserver的后端存储是Git时,默认就是master
application:
name: application
3.将ms-config-server、ms-config-client的两个微服务启动起来:
4.访问:http://localhost:8010/msconfig-client

5.将application-pre.yml改为application-pre.properties文件


6.再次重启ms-config-client微服务,然后访问服务:虽然能够访问,但是访问的spring.application.name这个参数不对,不是远程仓库的ms-config-server-pre,而是本地的spring.application.name=application(见第二步),这是为何呢?猜测应该是远端获取不到,获取本地的参数

7.修改client的程序,将端口参数写获取打印出来:

8.再次重启ms-config-client微服务,然后访问服务:http://localhost:8010/msconfig-client,spring.application.name和application,server.port 读取的都是本地配置文件ms-config-client中的配置。

9.将application-pre.properties内容修改为键值对形式:

10.再次重启ms-config-client微服务,然后访问服务:http://localhost:8010/msconfig-client,无法访问:

11.将application-pre.properties内容server.port改为server.porte:

12.再次重启ms-config-client微服务,然后访问服务:http://localhost:8010/msconfig-client,可以看到端口号还是读取本地的配置。

13.将仓库的application-pre.properties改为application-pre.yml,同时内容也改为层次结构

14..再次重启ms-config-client微服务,然后访问服务:http://localhost:8010/msconfig-client, 还是无法访问

15.将文件中的 将application-pre.properties内容server.port改为server.porte:

16..再次重启ms-config-client微服务,然后访问服务:http://localhost:8010/msconfig-client,端口能访问,但是访问的是本地的配置文件。

结论是:当远程仓库中的配置文件,不管是properties格式还是yml格式,只要里面配置server.port有这个参数,client无法访问到,当server.port改为其他名称,如server.porte,微服务client则能访问到,但是访问的是本地server.port配置的值8010。这是为什么呢?
奶奶的,不明白怎么回事,有水明白,告知一声。

探讨SpringCloud配置中心中server.port参数设置导致客户端无法正确读取远程配置的问题,分析了不同格式配置文件的影响及解决思路。

被折叠的 条评论
为什么被折叠?



