spring cloud config 结合 spring cloud bus实现配置自定的刷新
在线上环境中,有时候我们希望系统中的某些配置参数在修改后,可以立即生效而不用重新启动服务。由上一节我们知道,我们可以把配置文件统一放到配置服务中进行管理,这一节我们在配置中心中整合spring cloud bus并结合git 的webhook实现配置的自动刷新。
整合spring cloud bus后我们可以获取到一些新的端点:
POST /bus/refresh: 用于刷新配置
POST /bus/refresh?destination=spring.application.name:port 刷新具体的某个微服务,port和前面的name可以使用通配符 *
需求
实现系统中的配置的自动刷新
实现步骤(在上一节代码的基础上)
1、安装 erlang 和 rabbitmq, 需要注意 rabbitmq不同的版本需要不同的erlang的版本,参考链接 https://www.rabbitmq.com/which-erlang.html
2、config server 和 config client 端同时引入以下依赖
<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
3、需要动态刷新配置的地方加上 @RefreshScope 注解
此处是从配置中心获取 msg 这个字段的值,记住这个controller 的访问路径,下方演示需要用到
@RestController
@RefreshScope
public class PrintMsgController {
	@Value("${msg}")
	private String msg;
	/**
	 * 打印msg消息
	 *
	 * @return
	 */
	@GetMapping("print/msg")
	public String print() {
		return msg;
	}
}
  4、找到 git 的远程仓库,配置 webhook,这里以 github为例
     5、配置中心和配置客户端的代码 配置文件和上节差不多,唯一不同的是加入了 rabittmq 的配置
spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
运行结果
解释:
1、演示 config server 的代码
2、演示 config client 的代码
3、服务注册中心上各个服务注册的情况
4、演示 webhook的配置(webhook配置的地址需要是外网可以访问的,我上方的例子是使用了一个内网穿透工具)
5、更新 git 仓库上的配置,看各个客户端是否都更新
6、取消webhook,然后开效果
7、在 chrome 浏览器中演示如何只更新某个具体的微服务或使用通配符更新
完整代码
配置动态刷新完整代码:https://gitee.com/huan1993/spring-cloud-parent/tree/master/config/config-bus-webhook
spring cloud config 结合 spring cloud bus实现配置自定的刷新的更多相关文章
- Spring Cloud Config整合Spring Cloud Kubernetes,在k8s上管理配置
		
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Kubernetes有专门的ConfigMap和Secret来管理配置,但它也有一些局限性,所以还是希望通过Spring C ...
 - Spring Cloud官方文档中文版-Spring Cloud Config(下)-客户端等
		
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#_serving_alternative_formats 文中例子我做了 ...
 - .NET Core微服务之基于Steeltoe使用Spring Cloud Config统一管理配置
		
Tip: 此篇已加入.NET Core微服务基础系列文章索引 => Steeltoe目录快速导航: 1. 基于Steeltoe使用Spring Cloud Eureka 2. 基于Steelt ...
 - spring cloud config客户端
		
上篇介绍了spring cloud config服务器,本篇介绍客户端.客户端主要是从config服务器获取配置信息. 代码示例 首先创建一个Maven项目,在pom.xml文件中添加依赖: < ...
 - Spring Cloud Config中文文档
		
https://springcloud.cc/spring-cloud-config.html 目录 快速开始 客户端使用 Spring Cloud Config服务器 环境库 健康指标 安全 加密和 ...
 - Spring Cloud搭建手册(2)——Spring Cloud Config
		
※在Dalston.SR2版本以后,均不能正常加密,如果必须使用此功能,需要降级到SR1或Camden SR7. 1.首先需要创建一个config-server工程,作为配置中心的服务器,用来与git ...
 - spring cloud config 详解
		
Spring Cloud 为开发人员提供了一系列的工具来快速构建分布式系统的通用模型 .例如:配置管理.服务发现.断路由.智能路由.微代理.控制总线.一次性Token.全局锁.决策竞选.分布式sess ...
 - Spring Cloud Config 实现配置中心,看这一篇就够了
		
Spring Cloud Config 是 Spring Cloud 家族中最早的配置中心,虽然后来又发布了 Consul 可以代替配置中心功能,但是 Config 依然适用于 Spring Clou ...
 - SpringCloud学习笔记(7):使用Spring Cloud Config配置中心
		
简介 Spring Cloud Config为分布式系统中的外部化配置提供了服务器端和客户端支持,服务器端统一管理所有配置文件,客户端在启动时从服务端获取配置信息.服务器端有多种配置方式,如将配置文件 ...
 
随机推荐
- ubuntu14.04 安装MySQL 5.7
			
ubuntu14.04 默认在线安装MySQL 5.5 1) wget http://dev.mysql.com/get/mysql-apt-config_0.7.3-1_all.deb 2) dpk ...
 - JS010. 三元运算符扩展运用(多层判断语句 / 多条表达式)
			
MDN - 三元运算符 语法 Condition ? exprIfTrue : exprIfFalse 用例: function getFee(isMember) { return(isMember ...
 - 并发编程之:ForkJoin
			
大家好,我是小黑,一个在互联网苟且偷生的农民工. 在JDK1.7中引入了一种新的Fork/Join线程池,它可以将一个大的任务拆分成多个小的任务并行执行并汇总执行结果. Fork/Join采用的是分而 ...
 - Catch That Cow----BFS
			
Catch That Cow Description 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上 ,农夫起始位于点 N(0<=N<=100000) ,牛位于点 K(0<= ...
 - 2021ICPC网络赛第一场部分题解-The 2021 ICPC Asia Regionals Online Contest (I)
			
写在前面 本来应该6题的,结果不知道哪个铸币发了H的clar,当即把我们的思路转向三维几何上.当时我们还在想这三维计算几何的正确率有点太高了还在感叹ICPC选手的含金量,直到赛后我才知道这H题的铸币出 ...
 - Nginx系列(4)- Nginx安装 | Windows
			
下载 访问官网,选择稳定版对应的Windows系列 安装解压即可 启动nginx 有很多种方法启动nginx 直接双击nginx.exe,双击后一个黑色的弹窗一闪而过 打开cmd命令窗口,切换到ngi ...
 - Shell系列(35)- for循环语法一简介及批量解压缩脚本
			
for循环语法一 for 变量 in 值1 值2 值3 - do 程序 done 例子 需求:批量解压缩 脚本: #!/bin/bash cd /root/publicls *.tar.gz > ...
 - 停止:service jenkins stop,提示:Failed to stop jenkins.service: Unit jenkins.service not loaded.
			
uni@uni-virtual-machine:~$ service jenkins stop Failed to stop jenkins.service: Unit jenkins.service ...
 - greedy algorithm, insertion sort, quick sort
			
always makes the choice that seems to be the best at that moment. Example #1: @function: scheduling ...
 - centos7安装部署SVN
			
SVN介绍 SVN是个自由.开源的版本控制系统,绝大多数开源软件都使用SVN作为代码版本管理软件. SVN的官方网站http://subversion.apache.org/.目前SVN在开源社区 ...