Consul 入门教程 - 新版篇
大纲
新版本使用
版本说明
组件名 | 版本 |
---|---|
Java | 17+ |
Spring Boot | 3.2.0 |
Spring Cloud | 2023.0.0 |
spring-cloud-starter-consul | 4.1.0 |
Consul 配置中心
使用案例
这里将演示新版本 Consul 作为配置中心的使用案例,由于篇幅有限,只给出核心代码和配置信息。
核心代码
- 引入依赖
1 | <dependency> |
- 配置属性类
1 | import lombok.Getter; |
配置文件
配置规则说明
Spring Cloud Consul 在 官方文档 中提到过,要求在 bootstrap.yml
中配置 Consul 配置中心,并遵从一定的配置规则。
创建配置文件
在项目中创建 bootstrap.yml
配置文件,并添加以下配置信息:
1 | spring: |
Consul 添加配置信息
访问 Consul 的 UI 界面,比如 http://127.0.0.1:8500/
,然后手动添加不同环境(比如默认环境、开发环境、测试环境)的配置信息,如下图所示。
####### 默认环境的配置信息
- 首先创建
config
文件夹,必须以/
结尾
- 然后,在
config
文件夹下创建cloud-payment-service
文件夹(名称必须跟微服务应用的名称一致),必须以/
结尾
- 最后,在
cloud-payment-service
文件夹下面创建data
配置信息,这里的data
不再是文件夹,而是 key
####### 开发环境的配置信息
- 首先创建
config
文件夹,必须以/
结尾
- 然后,在
config
文件夹下创建cloud-payment-service-dev
文件夹(名称由微服务应用的名称 + Profiles 组成,比如dev
表示开发环境),必须以/
结尾
- 最后,在
cloud-payment-service-dev
文件夹下面创建data
配置信息,这里的data
不再是文件夹,而是 key
####### 测试环境的配置信息
- 首先创建
config
文件夹,必须以/
结尾
- 然后,在
config
文件夹下创建cloud-payment-service-test
文件夹(名称由微服务应用的名称 + Profiles 组成,比如test
表示测试环境),必须以/
结尾
- 最后,在
cloud-payment-service-test
文件夹下面创建data
配置信息,这里的data
不再是文件夹,而是 key
测试代码
- 添加测试接口
1 |
|
application.yml
配置文件
1 | server: |
- 测试步骤
- (1) 启动微服务应用,访问
http://127.0.0.1:8080/config/info
测试接口,观察接口的返回结果是不是Dev Env
。 - (2) 将
application.yml
配置文件中的active: dev
更改为active: test
,然后重启微服务应用。 - (3) 再次访问
http://127.0.0.1:8080/config/info
测试接口,观察接口的返回结果是不是Test Env
。
- (1) 启动微服务应用,访问
动态刷新配置信息
Spring Cloud Consul 支持动态刷新配置信息,也就是当用户在 Consul 的 UI 管理界面更改了配置信息,微服务应用可以实时感知到并执行更新操作。当使用动态刷新配置信息时,只需要添加 @RefreshScope
注解即可。
1 | import lombok.Getter; |
特别注意
- Spring Cloud Consul 默认是每隔 55 秒执行一次配置刷新,以此来判断 Consul 配置中心的配置信息是否发生了变更。
- 如果希望接近实时的更新配置信息,可以通过
spring.cloud.consul.config.watch.wait-time
来指定配置信息更新的时间间隔(单位是秒),但生产环境不建议更改此参数。官方文档的说明如下图所示:
1 | spring: |