SpringCloud的Config-Server
- 快速入门
1.引入依赖 spring-cloud-config-server
2.开启注解 @EnableConfigServer
3.application.yml配置(可以配置从git上获取配置文件)
4.启动服务,测试访问:http://ip:port/分支名/xxx-dev.yml
- 客户端配置
1.引入依赖 spring-cloud-config-client
2.修改or创建 bootstrap.yml
# config客户端配置,和ConfigServer通信,并告知ConfigServer希望获取的配置信息在哪个⽂件中
spring:
cloud:
config:
name: xxx-service #配置⽂件名称
profile: dev #后缀名称
label: master #分⽀名称
uri: http://ip:port #ConfigServer配置中⼼地址
- Config手动刷新部署
- 引入依赖 springboot-starter-actuator
- bootstrap.yml添加配置
management:
endpoints:
web:
exposure:
include: /refresh #也可以暴露所有端口用*号表示
- 在要使用配置的类上面加上@RefreshScope注解
- 手动发起http://ip:port/actuator/refresh请求
- Config配置自动刷新配置
- Config Server和客户端均添加消息总线支持
引入依赖spring-cloud-starter-bus-amqp- ConfigServer和客户端均添加MQ配置
spring:
rabbitmq:
host:
port:
username:
password:
- ConfigServer端口暴露:
management:
endpoints:
web:
exposure:
include: /refresh #也可以暴露所有端口用*号表示
- 重启各个服务,更改配置后,向配置中心服务端发送post请求
http://ip:port/actuator/bus-refresh
此时各个客户端会自动刷新配置
原理:
ConfigServer和客户端都通过消息总线(RabbitMq实现),订阅同一个Topic,当Config改变Topic内容时,所有客户端都会收到通知,做出相应处理
5. Config定向刷新
- 场景:
在某个特定的服务需要单独配置时- 操作:
在Config自动刷新端基础上,更改发送命令内容即可。
将发起的请求加上实例的 服务名:端口号,例如:
http://ip:port/actuator/bus-refresh/#{instanceName}:#{port}