博主分享免费Java教学视频,B站账号:Java刘哥
上文(点此回顾)介绍了 Spring Cloud 中配置中心的搭建以及客户端(即微服务项目,如博客系统)读取配置中心配置的方法。
但是,我们发现,每次在 GitHub 上修改配置,比如修改了数据库账号密码,需要重启客户端项目才生效,这个成本还是比较大的。
我们之前说了 Spring Cloud Config 可以实现自动刷新配置的,怎么实现呢?
本文将介绍通过 Spring Cloud Bus 实现,标题声明了是基于 SpringBoot2.x,是因为相对1.x版本的可能配置有些不同。
application.yml 添加配置
上面这个配置目的是为了让我们之后能访问到 /actuator/bus-refresh 接口
因为 rabbitmq 默认 主机 localhost, 端口 5672,账号 guest,密码 guest 都没有修改, 所以无需配置
2、客户端配置
pom.xml 中添加依赖
3.分别重启 Config Server 和客户端服务
然后查看 rabbitmq 可视化页面,可以看到有两个队列
4.现在我们去GitHub修改 application-dev.yml 里的配置
然后在终端执行命令让配置中心刷新配置,同时通知客户端重新读取配置
该命令的意思就是向 Config Server 端的 /actuator/bus-refresh 发起 POST 请求
有 PostMan 的朋友,其实也可以直接用 PostMan 测试,返回是 204 状态码
5.验证
通过一个简单的方法就能验证客户端是否刷新了配置,我先把数据库密码改成错误的,然后调用 客户端的查询用户列表的接口,显然是会报错的,没有数据。
然后我在 GitHub 修改配置,然后执行 第4步 的命令,然后再去调用查询用户列表的接口,发现有了数据。
可见,我们在没有重启客户端项目的情况下,实现了刷新配置功能。
一、准备
本地安装了 RabbitMQ,并启动(可以参考这里) Eureka 启动 Config Server 启动 一个微服务项目(这里以前文的博客系统的服务提供者为例,读取注册中心的配置)启动二、整合 Spring Cloud Bus
注意:Config Server 和 客户端都需要整合 bus-amqp 1、Config Server 配置 pom.xml 中添加依赖- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-bus-amqp</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-config-monitor</artifactId>
- </dependency>
- management:
- endpoints:
- web:
- exposure:
- include: bus-refresh
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-bus-amqp</artifactId>
- </dependency>
- curl -v -X POST "http://localhost:8080/actuator/bus-refresh"
三、通过配置 Git 仓库 WebHooks 来自动调用接口
上面我们还是手动执行去调用配置中心的 /actuator/refresh 接口 通常我们比较懒,我们想当GitHub上的配置修改了,自动去调用这个接口 事实上,是有的,GitHub 提供 WebHooks 这种东西- 微信
- 交流学习,有偿服务
- 博客/Java交流群
- 资源分享,问题解决,技术交流。群号:590480292
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏