一、前言
在上篇博客中,向大家介绍了Spring Cloud Config ,分布式配置中心。它分成了服务端和客户端,服务端提供配置,客户端读取配置,既可以使用svn,也可以使用git存放配置文件,集中管理。
在这篇博客中,小编就向大家介绍如何修改了svn或者git上的配置文件,不用重启服务就可以刷新各个服务应用。就用到了Spring Cloud Bus。
二、什么是Spring Cloud Bus?
在介绍Spring Cloud Bus之前呢,我们需要先了解一下什么是消息总线。
在分布式系统中,我们通常会使用轻量级的消息代理(rabbitmq、kafuka)建立一个公共的主题,让所有的微服务都链接进来,并且监听消费这个主题内的内容。我们就称这个主题是消息总线。
通过Spring Cloud Bus可以非常容易的搭建消息总线,同时实现一些消息总线中的常用功能,比如,结合Spring Cloud Config可以动态刷新微服务的应用配置信息。
本文中,小编使用rabbitmq来实现消息总线,关于rabbitmq的安装和使用,可以参看小编以前的博客~~
https://blog.csdn.net/kisscatforever/article/details/80073796
三、实践
3.1 准备
根据上一篇博客搭建好的框架,我们在这个基础上进行修改,您可以在这里得到代码。
https://github.com/AresKingCarry/SpringCloudDemo
3.2 整合springcloud config 配置内容实时更新
修改上一篇博客的configClient项目。
修改pom:添加对mq的支持
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wl</groupId>
<artifactId>configclient</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>configclient</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>com.wl</groupId>
<artifactId>scf</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<!--提供mq-->
<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>
</dependencies>
</project>
3.3 配置文件添加mq信息
配置文件中添加mqserver的地址和用户名:
server:
port: 6001
spring:
application:
name: config-client
cloud:
config:
label: master
profile: dev
uri: http://localhost:8888
rabbitmq:
host: 192.168.137.16
port: 5672
username: admin
password: admin
management:
security:
enabled: false
3.4 启动
依次启动Eureka,config,configClient。
访问localhost:6001/getInfo,可以读取到上一节Git的配置文件的属性值。
3.5 通过命令刷新
不关闭configclient服务,修改git配置文件内容。然后通过发送post请求的http://localhost:6001/bus/refresh。
重新访问localhost:6001/getInfo,可以看到新的内容。
四、小结
多尝试,多实践。