前沿:
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=张三,得到数据如下:

发现已经动态刷新了。

更多推荐

spring cloud五大组件之config