spring cloud config 配置文件更新

Spring Cloud Config Server 作为配置中心服务端
- 拉取配置时更新 git 仓库副本,保证是最新结果
- 支持数据结构丰富,yml, json, properties 等
- 配合 eureke 可实现服务发现,配合 cloud bus 可实现配置推送更新
- 配置存储基于 git 仓库,可进行版本管理
- 简单可靠,有丰富的配套方案
Spring Cloud Config Client 默认客户端实现
- SpringBoot 项目不需要改动任何代码,加入一个启动配置文件指明使用 ConfigServer 上哪个配置文件即可
简单使用示例
新建一个 git 仓库,添加一个配置文件。例如想要一个 billing的服务,性质是开发,运行环境是测试环境。
那么就新建一个 testing 的分支,然后提交一个 billing-dev.properties 的文件
devMode = true
spring.application.name = billing
spring.jdbc.host = localhost
spring.jdbc.port =
spring.jdbc.user = root
spring.jdbc.password = 123qwe
loging.file = demo

ConfigServer.java
@SpringBootApplication
@EnableConfigServer
public class ConfigServer {
public static void main(String[] args) {
SpringApplication.run(ConfigServer.class, args);
}
}
application.yml
server:
port:
spring:
cloud:
config:
server:
git:
uri:https://git.coding.net/tiangao/demo-config-server.git
clone-on-start: true 上面就是配置的git仓库的地址
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>spring-cloud-demo</artifactId>
<groupId>xyz.stg.cloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.</modelVersion>
<artifactId>config-server</artifactId>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4..RELEASE</version>
</parent>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-config-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>1.2..RELEASE</version>
</dependency>
</dependencies>
</project>
好了,配置中心已经可以启动了,配最简单的可以用浏览器来访问。
现在各个SpringCloud的项目配置接入配置中心
在resource下的bootstrap.properties配置文件中,配置中心的相关配置如下,注意不是在application.yml中配置

bootstrap.yml文件优先级比application.yml高,bootstrap.yml文件中存储的是不经常改变的配置信息
application.yml中配置的是经常改变的信息,上面spring config的配置文件必须是base-dev.yml或者base-dev.txt这种形式
在master分支
上面的billing-dev.properties,这里name就配置为billing,profile就设置为dev

config server的地址是127.0.0.1:12000这个地址

当在马云上面修改了配置文件,应用要及时的快速的收集到变更,需要使用到spring bus消息总线

spring clould bus依赖mq来实现,这里在config server服务器应用中需要增加下面的配置,一个是bus的依赖,一个是mq的依赖,在配置文件中需要增加mq的配置和bus的配置


config server服务端要使用spring bus必须暴露bus-refresh这个接口
接下来我们来看 config 客户端的配置,也需要引入bus依赖,mq依赖,同时还需要引入actuator依赖

也需要引入bus的客户端,也需要引入rabait mq,这里还需要引入actyator监听器,用来监控bus-refresh这个操作
上面就配置好了,
当我们,手动修改了马云中的配置文件之后,我们收到调用config server服务器端暴露的接口,手动通过mq发生消息给客户端,客户端一直通过mq进行消息的监听,修改了
配置文件之后,需要我们收到进行刷新


上面这个接口就是手动刷新配置文件的接口
在客户端中要获得马云上面自定义的配置文件信息,需要添加@RefreshScope注解,如果不使用客户端不能收到自定义的注解,但是application.yml自带的例如ruka、spring data jpa、Hystix这些
注解如果配置文件修改了,使用了上面的bus-refresh接口手动刷新了,应用是是可以收到到,但是配置文件中自定义的注解,如果没有@RefreshScope注解,即使使用了bus-refresh接口手动刷新了,使用但是自定义的注解是收不到的这里要特别注意。
@RefreshScope 配置文件自动刷新
1.在类上加@RefreshScope注解。
2.引入配置@Value。

5除了手动调用刷新接口实时更新配置文件之外,我们也可以使用github 的钩子,当git代码变动之后会触发钩子函数,钩子自动调用刷新接口

c
spring cloud config 配置文件更新的更多相关文章
- Spring cloud config配置文件加密解密
Spring cloud config配置文件加密解密 学习了:http://blog.csdn.net/u010475041/article/details/78110349 学习了:<Spr ...
- 使用对称加密来加密Spring Cloud Config配置文件
补充 使用Spring Cloud Config加密功能需要下载JCE扩展,用于生成无限长度的密文.链接:http://www.oracle.com/technetwork/java/javase/d ...
- 使用Spring Cloud Config统一管理配置,别再到处放配置文件了
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! 可配置是一个成熟软件系统应该提供的特性,而配置管理对于大型系统就显得十分重要,特别是对于拥有多个应用的微服务系统.可喜的是, ...
- Spring Cloud Config - RSA简介以及使用RSA加密配置文件
简介 RSA非对称加密有着非常强大的安全性,HTTPS的SSL加密就是使用这种方法进行HTTPS请求加密传输的.因为RSA算法会涉及Private Key和Public Key分别用来加密和解密,所以 ...
- spring cloud config搭建说明例子(四)-补充配置文件
服务端 ConfigServer pom.xml <dependency> <groupId>org.springframework.cloud</groupId> ...
- spring cloud config使用mysql存储配置文件
spring cloud config使用mysql存储配置文件 1.结构图 2.pom.xml: <?xml version="1.0" encoding="UT ...
- 配置文件--spring cloud Config
配置中心--Spring cloud Config 通过本次学习,我们应该掌握: Config Server 读取配置文 Config Server 从远程 Git 仓库读取配置文 搭建芮可用 Con ...
- spring cloud --- config 配置中心 [本地、git获取配置文件]
spring boot 1.5.9.RELEASE spring cloud Dalston.SR1 1.前言 spring cloud config 配置中心是什么? 为了统一管理配 ...
- 网络原因导致的 spring cloud config 读取git上的配置文件时报错:Cannot clone or checkout repository
今天在公司使用spring cloud config搭建配置中心的时候,出现了读取不到git库的问题:Cannot clone or checkout repository.在网上百度,前面几个答案都 ...
随机推荐
- 读Pyqt4教程,带你入门Pyqt4 _006
窗口组件是应用程序的基本构建块.PyQt4编程工具包拥有范围广泛的各种窗口组件.按钮.选择框.滑块.列表框等等,程序员工作所需要的一切.在教程的这部分中,我们将介绍一些有用的窗口组件. QCheckB ...
- 几个值得学习的Java博客
谈面试时从写一个单例开始究竟能问多深及终极解决方案 提到了<深入理解java虚拟器><java并发编程实践> 美团点评的技术博客:MySQL索引原理及慢查询优化 https: ...
- PHP获取临时文件的目录路径
PHP获得临时文件的文件目录相对路径,能够 根据tempnam()和sys_get_temp_dir()函数来完成. 下边我们运用简单的代码实例,给大伙儿介绍PHP获得临时文件的文件目录相对路径的方式 ...
- Jupyternotebook添加c++核心支持的配置过程
一.环境:虚拟机:(1)系统:centos7.5_1804(64bit)版本(2)软件环境:git.python3.5.3.Jupyter4.4.0二.下载安装脚本:资源及安装说明:https://g ...
- 拨开云雾-Verilog是个大杂烩(中性)
https://mp.weixin.qq.com/s/HKxX_79DtnXmFU1Mwt1GwA 一. 有意为之 Verilog是个大杂烩,这是有意而为之. Verilog IEEE S ...
- Java实现 LeetCode 788 旋转数字(暴力)
788. 旋转数字 我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数.要求每位数字都要被旋转. 如果一个数的每位数字被旋转以后仍然还 ...
- (Java实现) 洛谷 P1091合唱队形
题目描述 NN位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的KK位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K1,2,-,K,他们的身 ...
- Java实现 洛谷 P1010 幂次方
输入输出样例 输入 #1 1315 输出 #1 2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0) import java.util.Scanner; pu ...
- java实现迷宫问题
迷宫问题 对于走迷宫,人们提出过很多计算机上的解法.深度优先搜索.广度优先搜索是使用最广的方法.生活中,人们更 愿意使用"紧贴墙壁,靠右行走"的简单规则. 58 下面的代码则采用了 ...
- Java实现 蓝桥杯 历届试题 邮局
问题描述 C村住着n户村民,由于交通闭塞,C村的村民只能通过信件与外界交流.为了方便村民们发信,C村打算在C村建设k个邮局,这样每户村民可以去离自己家最近的邮局发信. 现在给出了m个备选的邮局,请从中 ...
