Java Spring Cloud Bus 实现配置实时更新详解

背景

使用Spring Cloud Config Server,启动Service时会从配置中心取配置文件,并注入到应用中,如果在Service运行过程中想更新配置,需要使用Spring Cloud Bus配合实现实时更新。

实现原理

需要借助RabbitMQ等消息中间件来实现服务间的通讯

0D838E45-6E22-0008-A8D4-9AE38ABD0D05.png

ConfigServer改造

目标:使ConfigServer暴露bus-refresh接口,通过bus通知服务更新配置

1. pom.xml增加以下依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2. 配置文件中配置暴露接口
management.endpoints.web.exposure.include=bus-refresh
Service改造
1. pom.xml增加以下依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2. 通过@RefreshScope声明配置刷新时需要重新注入
@RefreshScope
@Controller
public class LblController {
测试
1. 修改git仓库上的配置文件

Service配置没有更新

2. 调用http://localhost:8081/actuator/bus-refresh(POST)

Service配置更新

收藏 (0)
评论列表
正在载入评论列表...
我是有底线的
为您推荐
    暂时没有数据