irpas技术客

Spring Cloud完整组件搭建之路 第五篇 -Spring Cloud Config_m0_63164811

大大的周 4352

Spring Cloud完整组件搭建之路 第五篇 -Spring Cloud Config SpringCloud配置系列目录:前置知识配置中心包括3个部分 创建存放配置文件信息的git仓库git文件命名规范 创建新的Spring Cloud Config工程引入相关依赖新建并编辑application.yml配置文件创建application.yml文件编辑application.yml文件 实现自动刷新erlang安装配置erlang环境变量 RabbitMQ安装启动RabbitMQ进入RabbitMQ管理界面在新建工程的配置文件application.yml添加内容 在新建工程的添加启动类相关注解Config Client(USER-PROVIDER组的微服务)配置修改Controller方法添加配置文件内容修改配置文件名称添加相关依赖 Spring Cloud Config启动测试Spring Cloud Config注册成功查看当前git仓库中文件内容查看当前访问请求打印信息修改git文件信息并提交查看CONFIG-SERVER服务的actuator监控信息更新USER-PROVIDER中的配置信息为git中最新的内容打开Postman并发送post请求查看当前访问请求打印信息

书接上回【Spring Cloud完整组件搭建之路 第四篇 -Zuul】,我们搭建的微服务组件有了Eureka、OpenFeign、Ribbon、Hystrix、Zuul,并且一共已经有了六个服务,现在,有一个问题,如果我想把我微服务中所有USER-CONSUMER和USER-PROVIDER组的微服务的配置文件修改一个共同的内容,我该怎么办?一个个修改yml,并且一个个重启服务?我们现在USER-CONSUMER和USER-PROVIDER组的微服务一共就三个,操作也不麻烦,但如果一共10个呢?20个呢?

所以,我们需要一个能修改指定的所有微服务配置文件的组件,这样,我们就引入了Spring Cloud Config,接下来我们一起配置一下。

SpringCloud配置系列目录:

【Spring Cloud完整组件搭建之路-Eureka】 【Spring Cloud完整组件搭建之路 第二篇 -OpenFeign、Ribbon整合】 【Spring Cloud完整组件搭建之路 第三篇 -OpenFeign、Hystrix整合】 【Spring Cloud完整组件搭建之路 第四篇 -Zuul】

前置知识 配置中心包括3个部分 存放配置的地方:git 等。config server。从 1 读取配置。config client。是 config server 的客户端 消费配置,也就是要修改配置文件的微服务。 创建存放配置文件信息的git仓库

就是普通创建git仓库的步骤

git文件命名规范

获取配置规则:根据前缀匹配 /{name}-{profiles}.properties /{name}-{profiles}.yml /{name}-{profiles}.json /{label}/{name}-{profiles}.yml name 服务名称 profile 环境名称,开发、测试、生产:dev qa prd lable 仓库分支、默认master分支 我创建的文件名是user-provider-dev.yml,代表user-provider服务下的dev环境

匹配原则:从前缀开始。

创建新的Spring Cloud Config工程

根据【Spring Cloud完整组件搭建之路-Eureka】博客中的创建工程的步骤,选择Eureka Discovery Client、Config Server依赖创建完成。

引入相关依赖 <!--引入actuator依赖,用于开启当前工程的监控功能--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- 配置bus-amqp所需依赖,用于添加actuator的busrefresh信息,用于提供统一消息服务 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> <version>3.1.0</version> </dependency> 新建并编辑application.yml配置文件 创建application.yml文件

在src/mian/resource目录下创建application.yml文件即可。

编辑application.yml文件 server: port: 8888 # 打开actuator所有监控参数 management: endpoints: web: exposure: include: '*' # 配置git信息 spring: cloud: config: server: git: uri: https://gitee.com/hepai123/spring-cloud-config-center.git username: 账号 password: 密码 # git分支 label: dev application: name: CONFIG-SERVER # 连接eureka服务器 eureka: client: serviceUrl: defaultZone: http://euk-server-two.com:7000/eureka/ 实现自动刷新

上面的依赖中可以看到我们引入了bus-amqp,这个是用来统一通知所有config-client来进行指定操作的,包括全部刷新本服务的配置文件信息的指令,但是amqp的底层是一个消息队列MQ,直接有这个amqp功能,也就是能和amqp无缝整合的消息中间件有Kafka和RabbitMQ,RabbitMQ面向应用级开发,Kafka则是用于大的数据文件中转开发,所以我们集成RabbitMQ就可以了,所以我们需要进行如下操作:

erlang安装

http://·/install-windows.html

启动RabbitMQ

在安装目录的bin目录下cmd,按顺序执行以下内容:

# 开启RabbitMQ节点 rabbitmqctl start_app # 开启RabbitMQ管理模块的插件,并配置到RabbitMQ节点上 rabbitmq-plugins enable rabbitmq_management 进入RabbitMQ管理界面

访问地址:http://localhost:15672 用户名密码均为guest

在新建工程的配置文件application.yml添加内容 spring: # 配置rabbitmq信息 rabbitmq: host: localhost port: 5672 username: guest password: guest 在新建工程的添加启动类相关注解 @EnableEurekaClient @EnableConfigServer Config Client(USER-PROVIDER组的微服务)配置 修改Controller方法

在博客【Spring Cloud完整组件搭建之路 第二篇 -OpenFeign、Ribbon整合】中,我们创建了UserProviderController测试接口类,我们将其进行修改,修改后代码如下:

import org.apache.commons.lang.builder.ToStringBuilder; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import java.util.Map; @RestController @RefreshScope public class UserProviderController { @Value("${server.port}") private String port; @Value("${hepai.say}") private String say; /** * 用于为consumer提供feign带参的get访问 * @param id * @return */ @RequestMapping(value = "/aliveGet",method = RequestMethod.GET) public String aliveGet(@RequestParam("id") Integer id){ return id + "---"+ port + "aliveGet"; } /** * 用于为consumer提供feign带参的get访问 * @return */ @RequestMapping(value = "/noParamGet",method = RequestMethod.GET) public String noParamGet(){ return port + "aliveGet:" + say; } /** * 用于为consumer提供feign带参的post访问 * @param map * @return */ @RequestMapping(value = "/alivePost",method = RequestMethod.POST) public String alivePost(@RequestBody Map<String,Object> map){ return ToStringBuilder.reflectionToString(map) + "---"+ port + "alivePost"; } /** * 用于为consumer提供feign带参的post访问 * @param map * @return */ @RequestMapping(value = "/alivePostParam",method = RequestMethod.POST) public String alivePostParam(@RequestParam Map<String,Object> map){ return ToStringBuilder.reflectionToString(map) + "---"+ port + "alivePostParam"; } }

代码修改点:

添加@RefreshScope注解添加对${hepai.say}配置信息的引入对noParamGet方法的修改,打印最新say信息 添加配置文件内容

注意spring.cloud.config.profile是git文件名的最后一个杠(-)后面的内容 注意spring.cloud.config.label是要更新的git文件所在的git分支 注意spring.cloud.config.discovery.service-id是配置中心的服务名称

spring: # 使用git仓库中dev结尾的文件,并配置config服务器 cloud: config: profile: dev label: dev # 可在eureka自动找寻config服务端 discovery: enabled: true service-id: CONFIG-SERVER # 配置rabbitmq信息 rabbitmq: host: localhost port: 5672 username: guest password: guest management: endpoints: # 开启Actuator监控eureka服务所有信息,不加此配置只打开health和info web: exposure: include: '*' 修改配置文件名称

由application.yml修改为bootstrap.yml

添加相关依赖 <!-- 使用bootstrap.yml启动所需依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.1.0</version> </dependency> <!-- 配置bus-amqp所需依赖,用于添加actuator的busrefresh信息,可实现自动刷新 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> <version>3.1.0</version> </dependency> <!-- config-client所需依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> Spring Cloud Config启动测试 Spring Cloud Config注册成功

查看当前git仓库中文件内容

查看当前访问请求打印信息

修改git文件信息并提交

查看CONFIG-SERVER服务的actuator监控信息

这个busrefresh就是我们要用到的自动刷新的核心方法。 现在这个时候我们的访问请求打印信息依然没有变,还是原先的内容

更新USER-PROVIDER中的配置信息为git中最新的内容 打开Postman并发送post请求

请求地址:http://config-serverIP:端口号/actuator/busrefresh

查看当前访问请求打印信息

最终,在没有重启服务的情况下,配置信息更新成功。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Spring #Cloud完整组件搭建之路 #第五篇 #Cloud #config