前言

在前面一节中,我们通过执行/refresh端点来手动刷新配置,但是如果微服务的数量太多,一个一个刷新就很麻烦也很慢。本节介绍使用Spring Cloud Bus实现批量刷新和自动刷新。

使用Spring Cloud Bus实现配置批量刷新

Spring Cloud Bus依赖rabbitmq或kafka,这里我们使用rabbitmq。

1.rabbitmq的安装与使用

进入rabbitmq的下载页面下载安装包(这里使用windows),下载地址为:http://www.rabbitmq.com/download.html

在下载页面的右侧有各个系统的安装方法。

windows的地址为:http://www.rabbitmq.com/install-windows.html

rabbitmq依赖Erlang,所以在安装rabbitmq之前需要安装Erlang。

在http://www.rabbitmq.com/which-erlang.html这个页面给出了每个rabbitmq应该安装的Erlang版本。

我们下载的是3.7.7的版本,推荐的Erlang版本是21.0.x 。

erlang的下载地址为:http://erlang.org/download/

csdn下载地址:https://download.csdn.net/download/qq_24118265/10186110

下载完毕后,就依次安装Erlang和rabbitmq即可。

安装完毕后,可以看到rabbitmq已经作为服务启动了。

2.开启RabbitMQ网页端控制台

1.设置ERLANG_HOME环境变量;

2.到 r a b b i t m q h o m e / s b i n rabbitmq_home/sbin rabbitmqh​ome/sbin执行:

rabbitmq-plugins.bat enable rabbitmq_management

如图:

3.重新开启rabbitmq服务。

4.浏览器访问http://localhost:15672,用户名和密码默认都是guest。

3.Cloud Config Client修改

  1. 增加spring-cloud-starter-bus-amqp依赖;

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId>
    </dependency>
    
  2. 增加rabbitmq配置

    spring:rabbitmq:host: localhostport: 5672username: guestpassword: guest
    

    如此就大功告成了!

下面进行测试。

启动Config Server和2个Cloud Client(为了测试批量刷新配置)。
在Cloud Client启动时,控制台可以看到有一个端点/bus/refresh,我们用它可以批量刷新配置。
我们将git仓库配置文件的一个配置项做修改:

my.custom.message=Hello,This is new value!!!

我们使用curl执行刷新命令:

curl -X POST http://localhost:8080/bus/refresh

然后访问Cloud Config Client,看看是否配置更新。

可以看到,2个Cloud Config Client应用配置都已经刷新!

观察2个Cloud Config Client,可以看到如下日志:

至此就实现了批量配置刷新。

我们到RabbitMQ的控制台的Exchanges,可以看到springCloudBus。

刷新某个Cloud Config Client

如果要刷新某个Cloud Config Client的配置,可以使用/bus/refresh?destination=customers:9000。其中,customers:这里是ApplicationContext ID,9000是服务的端口。

但是,如果在BUS上已经有了这个ID,则会刷新这个ID的配置,其他的会被忽略。即如果在不同的机器上部署了同样的Cloud Config Client应用,ID一样,端口一样,IP不一样,则只会有一个服务配置属性会被刷新。

解决办法就是制定spring.application.index,不过这样就很麻烦了,每个同类的微服务(ID相同)都需要指定不同的index。不过可以指定spring.application.index=${random.long}来使用随机生成的数字作为index。不过,很明显似乎是一个设计缺陷,为什么不增加一个host参数?

刷新某个Cloud Config Client服务的所有实例

这个比较简单了,使用/bus/refresh?destination=customers:**即可,customers指应用的id。

参考Spring Cloud Bus章节:http://cloud.spring.io/spring-cloud-static/Edgware.SR3/single/spring-cloud.html#_spring_cloud_bus

配置自动刷新

这个要借助于Git管理软件提供的WebHooks钩子,可以指定一个地址,在提交到Git仓库时自动触发请求这个地址。

比如gitee.com

上面的URL就指定为刷新地址,如http://localhost:8080/bus/refresh,密码随意了。

springcloud系列30——Spring Cloud Config配置属性自动刷新相关推荐

  1. Spring Cloud系列之Spring Cloud Config

    认识Spring Cloud Config Spring Cloud Config是最早的配置中心,虽然后面的之秀Nacos可以取代它, 但是Spring Cloud Config还是很多公司在用,比 ...

  2. (七)Alian 的 Spring Cloud Config 配置中心(客户端)

    目录 一.背景 二.maven依赖 三.配置文件 四.验证 一.背景   通过上一篇文章,我们已经搭建了配置中心了,接下里我们继续改造我们的订单服务了,之前我们的订单服务的数据库配置还是写在配置文件中 ...

  3. Spring Cloud Config 配置中心实践过程中,你需要了解这些细节!

    本文导读: Spring Cloud Config 基本概念 Spring Cloud Config 客户端加载流程 Spring Cloud Config 基于消息总线配置 Spring Cloud ...

  4. (六)Alian 的 Spring Cloud Config 配置中心(服务端)

    目录 一.简介 二.数据库 2.1.应用表 2.2.属性表 2.3.视图 2.4.初始化数据 三.配置 3.1.pom.xml 3.2.application.properties 3.3.主类 3. ...

  5. Spring Cloud Config 配置中心

    1.构建config-server 创建一个pom.xml <?xml version="1.0" encoding="UTF-8"?> <p ...

  6. Spring Cloud Config配置服务

    文章目录 前言 一.Spring Cloud Config Service 引入POM文件 启动配置服务 基于(Native)本地配置 配置类NativeEnvironmentProperties 解 ...

  7. spring cloud config配置中心源码分析之注解@EnableConfigServer

    spring cloud config的主函数是ConfigServerApplication,其定义如下: @Configuration @EnableAutoConfiguration @Enab ...

  8. Spring Cloud Config 配置的加密解密

    配置内容的加密解密 很多场景下很多场景下,对于某些敏感的配置内容,例如数据库账号密码等应当加密存储.Config Server为配置内容的加密与解密提供了支持. 安装JCE Config Server ...

  9. Spring Cloud Config配置中心的使用

    一.概述 1. 为什么使用? 1> 配置文件太多,不方便维护 2> 配置文件一般都保存这各种明文显示的密码,无法保证配置内容的安全性,也无法做到按权限分配给个人 3> 更新配置项目需 ...

最新文章

  1. 通过RunLoop监听主线程的卡顿
  2. SCCM2012 R2实战系列之九:OSD(中)-- 捕获镜像
  3. 【SpringBoot集成ElasticSearch 01】2️⃣ 种方式的高级客户端 RestHighLevelClient 使用(依赖+配置+客户端API测试源码)
  4. tcp假连接_总结的23 个 TCP高频面试问题
  5. 使用.NET Core创建Windows服务(一) - 使用官方推荐方式
  6. 前端常用 JavaScript 方法封装
  7. Linux网络服务-Web Service之【apache的功能、安装、配置文件介绍以及实验实例】(三)...
  8. python3简单代码_python3实现简单汉诺塔的代码教程
  9. 西南大学计算机基础及数字电路907复习笔记
  10. PLSQL Developer安装破解 ,以及连接配置
  11. 惠普薄锐ENVY 15 X360升级DIY
  12. 【Pix4d精品教程】pix4d mapper相机未校准后手动添加连接点完美案例图文教程
  13. java 有哪些框架_Java常用框架有哪些?这些框架有什么用?
  14. 2018初中计算机考试知识点,2018计算机等级考试考点:考前学习的技巧
  15. Android Jason数据解析及显示
  16. 超越Yann LeCun:世界模型的学习和推理
  17. 高质量=高成本?优思学院告诉你并非必然!
  18. 介绍VO、DTO、PO、DO
  19. 经典谷歌面试题:高楼扔鸡蛋
  20. ASR项目实战-语音识别

热门文章

  1. 图像语义分割中的上采样(Upsampling)和下采样(subsampling)
  2. 马云四天三谈996被骂上热搜:抱歉,这届年轻人不好“骗”了!
  3. 新型“纳米镊子”可在无损活细胞条件下提取DNA链
  4. 进程控制块(PCB)
  5. Apache Fink 文件上传漏洞复现及利用
  6. path png转svg_canvg处理svg转png
  7. 芯片植入技术飞速发展 人类未来或变身
  8. 算法强化每日一题--组队竞赛
  9. osm地图数据 mysql_超实用! 如何下载OSM全球矢量地图数据?
  10. Ubuntu下查看IP地址