spring cloud config 统一配置中心

Config 統一配置中心

server端

首先我们引入依赖,需要根据当前版本而定。

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-config-server</artifactId>

</dependency>

再修改application类加入@EnableConfigServer注解

spring cloud config 统一配置中心

因为要注册到注册中心中,所以再引入一个依赖并加上@EnableDiscoveryClient注解。

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

</dependency>spring cloud config 统一配置中心

spring cloud config 统一配置中心

动态配置:进入yml文件中填写注册中心的地址,然后配置gitee或github,使用远程仓库来管理配置并做到动态刷新配置.

首先登陆码云

spring cloud config 统一配置中心

创建一个仓库,点击下载或克隆,复制地址。

spring cloud config 统一配置中心

补充yml

spring:

application:

name: config

cloud:

config:

server:

git:

uri: https://gitee.com/FYRT/u_bag_net.git

username: [email protected]

password: fyh1234123.

 

eureka:

client:

service-url:

defaultZone: http://localhost:8761/eureka/

server:

port: 8083

 

 

client端

接下来在码云上U袋网的项目中创建一个user-config.yml的配置文件,并将user服务的配置复制进去,注意文件格式必须是x-x,如果是user.yml,那么默认也回事user-test.yml之类的。配置文件后缀为dev是生产环境,test是测试环境,一般都是建立两个文件。

spring cloud config 统一配置中心

接下来引入依赖,这里需要注意的是application类中不需要加注解

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-config-client</artifactId>

</dependency>

这个时候配置一下user服务的yml配置。

spring:

application:

name: user #文件前缀名

cloud:

config:

profile: config #文件后缀名

discovery:

enabled: true

service-id: CONFIG #config 服务名

接下来启动eureka,user,config三个服务。

这个时候user服务报错了。spring cloud config 统一配置中心

spring cloud config 统一配置中心

原因如下:

通过启动日志可以发现:服务还是去 默认端口8888取配置中心的文件;这是怎么回事呢。其实就是一个配置文件优先级的问题;SpringCloud里面有个“启动上下文”,主要是用于加载远端的配置,也就是加载ConfigServer里面的配置,默认加载顺序为:加载bootstrap.*里面的配置 --> 链接configserver,加载远程配置 --> 加载application.*里面的配置; 总结:这里需要借助于“启动上下文”来处理加载远程配置;

所以只要将配置文件改为application.yml或bootstrap.yml文件即可。

spring cloud config 统一配置中心

然后我们再次启动user服务。

spring cloud config 统一配置中心

启动成功。

spring cloud config 统一配置中心

动态刷新

首先引入依赖,依赖需要看版本导入,服务会自动连接上rabbitmq,如果rabbitmq 端口和帐号都没有改变过是默认的,那就不需要配置rabbitmq,直接用docket 启动mq 即可,http://localhost:15672 查看队列信息,

docker语句:

docker run -d --net=host --name rabbitmq hub.c.163.com/library/rabbitmq:3.6.11-management

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-bus-amqp</artifactId>

</dependency>

启动config服务与user服务就可以在rabbitmq管理界面看到两个队列。

spring cloud config 统一配置中心

这样就算启动成功了。

接下来在码云上的user-config.yml中加上env: test 配置

spring cloud config 统一配置中心

然后再到项目中加一个接口,并加入@RefreshScope注解

spring cloud config 统一配置中心

注入env属性

spring cloud config 统一配置中心

写一个接口用来测试

spring cloud config 统一配置中心

启动user服务访问接口

spring cloud config 统一配置中心

接下来去配置一下码云的webhooks,作用是在你操作完后请求一个接口,这里的话需要注意的是url必须是域名而不能是ip。所以我们可以用natapp映射一个域名。

注意:动态刷新的地址有版本差异,每个版本的都不一样mointor只是git提供的一个方案,

一般是 bus-refresh 之类的。

spring cloud config 统一配置中心

修改一下配置

spring cloud config 统一配置中心

再访问一次接口,动态刷新完成

spring cloud config 统一配置中心