Spring Cloud教程 第十二弹 Spring Cloud Config整合Spring Cloud Bus实现配置动态刷新
创始人
2024-03-09 06:45:03
0

Spring Cloud Config整合Spring Cloud Bus

  • 1、回顾
  • 2、手动刷新
  • 3、Spring Cloud Bus动态刷新配置

1、回顾

在上一弹:Spring Cloud教程 第十一弹 Spring Cloud Config连接git和数据库 中介绍了spring cloud config的基本使用,但是配置无法动态刷新,也就是说如果我更改了git或数据库中的配置,项目必须重新启动才能使新配置生效。

注意:

  • 更新配置后,调用config server的HTTP接口是可以获取到新配置的,这是因为config server会实时请求git或数据库,配置当然是最新的,但是config client是感知不到的

下面介绍两种不重启项目便可以刷新配置的方式:

  1. 手动刷新
  2. 整合Spring Cloud Bus实现动态刷新

2、手动刷新

步骤如下。

  1. config client项目的pom.xml中引入spring-boot-starter-actuator依赖,如下所示:
org.springframework.bootspring-boot-starter-actuator

  1. config client配置端点,如下所示:
management:endpoints:web:exposure:include: "*"
  1. 在需要动态刷新的Bean上打@RefreshScope,如下所示:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RefreshScope
public class DynamicRefreshController {@Value("${stuName:\"\"}")private String stuName;@GetMapping("/config")public void init(){System.out.println("stuName="+stuName);}
}
  1. 当修改git、数据库配置时,POST请求config client路径/actuator/refresh,即可手动刷新

3、Spring Cloud Bus动态刷新配置

Spring Cloud Bus 实现配置的动态刷新步骤:

  1. 当git中的配置发生改变后,向config server发送一个 POST请求,请求路径为/actuator/bus-refresh
  2. config server接收到请求后,会将该请求转发给服务总线Spring Cloud Bus
  3. Spring Cloud Bus接到消息后,生成Topic然后会通知给所有config client
  4. config client接收到通知,请求config server拉取最新配置

Spring Cloud Bus需要引入RabbitMQ或Kafka作为消息传输的媒介。

与手动刷新不同,动态刷新的改造主要在config server项目中。

步骤如下:

  1. config server项目中的pom.xml引入依赖,如下所示:
org.springframework.cloudspring-cloud-starter-bus-amqp

org.springframework.bootspring-boot-starter-actuator

  1. config server配置端点,如下所示:
management:endpoints:web:exposure:include: "*"
  1. 安装并运行RabbitMQ
    参考文章:RabbitMQ入门教程
  2. config server配置RabbitMQ
spring:rabbitmq:host: localhostport: 5672username: guestpassword: guest

5.config client引入依赖:

org.springframework.cloudspring-cloud-starter-bus-amqp

  1. config client配置RabbitMQ
spring:rabbitmq:host: localhostport: 5672username: guestpassword: guest

bus-refresh端点原理:

  • /actuator/bus-refresh端点清除RefreshScope缓存并且重新绑定@ConfigurationProperties

相关内容

热门资讯

险资年内合计举牌20次,已达去... 险资的举牌潮仍在持续。港交所披露易信息显示,近日,弘康人寿保险股份有限公司(以下简称“弘康人寿”)举...
政策支持高端医疗器械创新发展,... 近日,《国家药监局关于发布优化全生命周期监管支持高端医疗器械创新发展有关举措的公告》发布(以下简称《...
德国外长:边境管控是“临时措施... 当地时间7月7日,德国外长瓦德富尔在访问捷克时表示,德国对波兰和捷克实施的边境管控是“临时措施”,未...
A股十年变迁:资本市场生态持续... 2015年以来,A股市场经历深刻变革,随着各项制度完善,上市公司回购积极性提高、分红金额增长,同时,...
白宫:暂停对乌克兰武器供应是国... 当地时间7月7日,美国白宫表示,暂停对乌克兰武器供应是美国国防部标准审查的一部分。美国白宫和五角大楼...
多次接受老板安排的KTV娱乐活... 转自:扬子晚报海南儋州市纪委监委7月7日晚消息,近日,儋州市纪委监委查处了2起违反中央八项规定精神典...
固安零工市场打通灵活就业群体与... 转自:河北日报固安零工市场打通灵活就业群体与岗位对接通道 本报讯(刘杰、陈放)“之前找零工全...
爱和责任 保险让生活更美好 转自:辽宁日报 核心提示 今天是“7·8全国保险公众宣传日”,今年是这一活动举办的第13年。今年活动...
极兔速递-W(01519.HK... 格隆汇7月8日丨极兔速递-W(01519.HK)发布公告,2025年第二季度,公司东南亚包裹量达16...
小藜麦长成大产业 转自:河北日报沽源县推动藜麦产业全链条发展,打造鲜明县域名片小藜麦长成大产业 5月26日,沽源...