Consul不仅能用来服务注册和发现,还支持Key/Value键值对的存储,可以用来做配置中心,并且支持动态刷新,这样我们可以将工程中的配置信息保存在Cosul中。
在父工程:pom文件中添加坐标
<!--consul配置中心组件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
1:在子工程中新建配置文件:bootstrap.yml (bootstrap.yml 优先 application.yml加载),并添加配置如下
spring:
application:
name: schedule-service
profiles:
active: dev
cloud:
consul:
host: 127.0.0.1
port: 8500
discovery:
serviceName: ${spring.application.name}
config:
enabled: true #enabled 设置config是否启用,默认为true
format: yaml #format 设置配置的值的格式,可以yaml和properties
prefix: config # prefix 设置配的基本目录,比如config
defaultContext: schedule # defaultContext 设置默认的配置,被所有的应用读取
data-key: data
# profiles是支持springboot多环境
2:将原本的配置文件application.yml改名叫:application-dev.yml,并将该文件中的配置注释复制保存到Consul中
application-dev.yml中原有的关于Consul地址和端口的信息配置以及应用名称的配置无需添加到Consul的
key/value中保存,因为在bootstrap.yml中已经配置了
Consul中保存的值(即工程中的配置)
注意事项
consul支持的K/V存储的Value值不能超过512KB
Consul的dev模式,所有数据都存储在内存中,重启Consul的时候会导致所有数据丢失,在正式的环境中,Consul的数据会持久化,数据不会丢失,使用如下命令启动Consul即可
consul agent -server -ui -bootstrap-expect 1 -data-dir D:\consul\data -node=n1 -
bind=127.0.0.1
登录配置中心转移配置
访问consul控制台
http://localhost:8500
2.1:key值由四部分拼接组成:
拼接结果如下:config/schedule,dev/data(注意间隔符号)
consul配置中心支持热加载演示:
编写方法读取配置文件中refreshTime的值,每秒在控制台打印一次
在打印过程中,进入配置中心将值由1改为2,查看打印情况