一、博客背景
在前面博客中,我们新建了配置服务端config-server, 也把feignserver服务改造成了配置客户端,但是当需要刷新配置信息的时候,不得不既重启 config-server, 又重启微服务。 这样的体验当然是不太好的。 我们当然是希望一旦 git 上的配置信息修改之后,就可以自动地刷新到微服务里,而不是需要手动重启才可以。本篇博客就讲解spring cloud如何利用消息总线来达到这一功能,本篇将继续对feiginserver做改动。
二、RabbitMQ安装与启动
如何安装RabbitMQ并且启动,本篇博客就不讲解
三、修改pom文件
增加引入相关依赖
<!-- 引起actuator监控中心依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 引起bus依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<!-- 引起hutool工具包依赖 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.1.0</version>
</dependency>
四、修改bootstrap.yml文件
增加总线和rabitmq配置,注意缩进位置
bus:
#启用springcloud config bus
enabled: true
#开启跟踪总线事件。
trace:
enabled: true
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
五、修改application.yml文件
新增路径访问允许:
#management.endpoints.web.exposure.include 配置表示暴露刷新的地址,cors.allowed-methods允许访问的方法
management:
endpoints:
web:
exposure:
include: "*"
cors:
allowed-origins: "*"
allowed-methods: "*"
六、新增刷新配置访问工具类
package tp;
import cn.hutool.http.HttpUtil;
import java.util.HashMap;
/**
* @Package: com.tp
* @ClassName: ConfigUtil
* @Author: tanp
* @Description: ${description}
* @Date: 2020/7/22 14:41
*/
public class ConfigUtil {
public static void main(String[] args) {
HashMap<String,String> headers =new HashMap<>();
headers.put("Content-Type", "application/json; charset=utf-8");
String result = HttpUtil.createPost("http://localhost:8685/actuator/bus-refresh").addHeaders(headers).execute().body();
System.out.println("result:"+result);
System.out.println("refresh 完成");
}
}
七、修改访问cotroller
在对外访问的controller上加上@RefreshScope注解,@RefreshScope注解,该注解表示在接到SpringCloud配置中心配置刷新的时候,自动将新的配置更新到该类对应的字段中。
八、修改git的配置信息
testconfig = change again |
然后将修改后的配置文件上传到git,可以参考我的博客:https://blog.csdn.net/bird_tp/article/details/107489178
九、重启feignserver并请求接口
重启服务后,然后访问http://127.0.0.1:8685/showconfig,
可以看到,我们获取到的配置信息已经修改,而我们也并未重启配置服务,
后续若再次更新配置,直接运行工具类即可刷新配置信息
如我修改
testconfig = change three jj |
然后运行工具类,
在访问http://127.0.0.1:8685/showconfig,可以发现展示信息以及变了