前沿:
spring cloud config是靠Bus用于支撑配置的动态刷新。这项技术是基于消息队列来实现的。spring cloud bus使用消息队列形成一个消息总线,每个需要获取配置的服务都需要与总线进行连接,获得各自的channel。配置中心就是通过消息总线,通知各个客户端通过channel获取最新的配置。
为什么使用消息队列?
是因为消息队列支持发布订阅模式,在配置中心发布新配置之后,就通过发布订阅广播给所有的客户端,获取最新的配置。
当然更多更详细的底层知识,大家可以自行百度。下面说说具体在项目中如何配置:
1、config server
一、application.yml文件
ps:rabbitmq的默认用户guest为管理员用户,默认只能本地登录,所以在进行操作时,可以新增用户然后赋予权限,直接用guest用户登录会报错
二、pom文件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
三、在启动类上添加注解
2、config服务端
一、pom文件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
二、application.yml文件
三、在github上添加配置文件
四、添加测试API
@Value("${test.testName}")
String testName;
@GetMapping("/sayHiMember")
public String sayHiMember(String name) {
return "SayHi会员:" + name + ":" + ":从Git上取文件配置:" + testName;
}
3、启动项目
启动顺序为:注册中心–>config server–>网关–>config client(首先的保证rabbit mq正常启动)
4、通过网关去访问client的API
http://localhost:9528/SERVICE-PRODUCT/sayHiMember?name=张三
返回数据为:
修改github配置文件内容为
test.testName = lisi-hello you are success???test123ZYQ-FJC-two
然后用post方法在config服务端运行http://localhost:7878/actuator/bus-refresh
然后再在浏览器上访问http://localhost:9528/SERVICE-PRODUCT/sayHiMember?name=张三,得到数据如下:
发现已经动态刷新了。