一定要看的走坑之路!SpringCloud统一配置中心 config Server |
您所在的位置:网站首页 › springcloud配置中心详解 › 一定要看的走坑之路!SpringCloud统一配置中心 config Server |
先说下client拿config的配置文件的流程!,这个不了解,很容易进坑!
1.如果config client 的配置文件为application.properties的时候 client 启动项目时,直接找自己properties,如果这个时候项目中有引用properties中的属性的时,项目启动就直接报错,因为他根本就不会去config server中找,所以找不到,就启动不了项目!!而且显示fetch config为localhost:8888说明他没有去config中拿配置文件。所以要把application.properties改名为bootstarp.properties 2.当config client的配置文件为bootstrap.properties的时候 这个时候,client先看自己的properties有没有eureka server的注册地址 1.如果有,就从自己的properties定义的defaultZone中注册到eureka server,并且找到注册在eureka server中的config server,于是就从config server中拿配置文件,拿到了之后再启动项目。 2.如果没有,就访问默认的eureka server地址:http://localhost:8761/eureka。如果eureka server在这上面,那么就找到了,如果不在,那么也找不到config server。 3.当git上一个分支有多个版本的properties的时候,如:client.properties, client-dev.properties, client-test.properties 这个时候若client指定要拿dev。但是,config server这边则是把client.properties, client-dev.properties这两个配置文件搞一起,再给client端。因此,假如client.properties,client-dev.properties这俩文件有相同的部分,你改了其中一个,并不会生效,因为他们是搞一起给client的。要改两个都要改 所以:要把application.properties改名为bootstrap.properties,并且最好不要把eureka server的端口改为其他的。git一个分支多个版本的文件,原版和扩展版,不要出现相同的内容。 现在介绍config server和client端的构建。最后面介绍自动刷新 config Server:1.在创建springboot项目的时候勾选,Eureka client +config Server 2.在github上创建一个仓库,写入一个yml配置文件,或者properties文件 这是要开放/bus-fresh接口,用于实现自动刷新: 1.加入依赖: org.springframework.cloud spring-cloud-config-client org.springframework.cloud spring-cloud-starter-bus-amqp2.写配置文件: cloud: config: discovery: enabled: true service-id: CONFIG profile: dev spring: application: name: client其他的可以全部删掉了,保留这两个即可,这里是config server项目在eureka上注册的application name 接着把applicationProperties改为: 1.如果Eureka server的端口号不是默认的8761,被我改成了如:8762 那么config client 这边会报错,因为它先去eureka server那儿注册自己,然后去config server这边拿配置文件 。现在它自己的配置文件都没有写eureka注册的地址,那么只能访问默认的eureka server port为8761.但结果又被我改了port为8762,那么它当然会报错。 正确的方法:直接把注册配置:defaultZone写在它的配置里面,不要放在配置中心。 2.如果git上有如:client.yml,client-test.yml,client-dev.yml。也就是同时有很多个client版本的yml。假如我client在配置中心用的是dev版本的,但是我更改了dev这个yml,会没有变化。因为,配置中心,它每次加载的是client.yml和client-dev.yml组合起来给client项目用的,所以改了client-dev.yml,你还要改client.yml才行。一般在client.yml里面放主配置。在其他版本里面放扩展的配置 。。。。。。。。。。。。。。。。。。。。。。。 下面实现自动刷新
1.在config server中加依赖: org.springframework.cloud spring-cloud-starter-bus-amqpok了之后,在浏览器访问localhost:15672可以看到rabbitMQ启动。 在client也引入这个依赖,此时会发现rabbitMQ又多了一个queue 在config server 开放bus-refresh接口。: management.endpoints.web.exposure.include=* 重启config server 会出现,“Endpoint ID bus-refresh contains invalid characters please migrate to a valid format”,我扎一开始认为没有开放成功。端口,然后查了很多资料发现是spring版本什么冲突。但!!!!!我试了下,并不影响我访问这个接口 下面在client 的controller加注解: 访问localhost:8080/actuator/bus-refresh 新版本要加actuator 有关config server的集群:直接多创建几个实例即可,client端自己会均衡访问config server的不同实例 其实在git上配置webhook一直不成功。查了各种方式也没用,甚至在controller中转发一下,再用restTemplate去post请求bus-refresh也不成功。。。后续再搞吧,也希望有大神能提供点方法 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |