SpringCloud的分布式配置及消息总线

Posted 未来有熊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud的分布式配置及消息总线相关的知识,希望对你有一定的参考价值。

 

1.在搭建分布式配置时,我们大概看下分布式配置的流程 如图所示:

当一个系统中的配置文件发生改变的时候,我们需要重新启动该服务,才能使得新的配置文件生效,spring cloud config可以实现微服务中的所有系统的配置文件的统一管理,而且还可以实现当配置文件发生变化的时候,系统会自动更新获取新的配置。目前目前springCloud仅支持RabbitMQ和Kafka ,我采用的市RabbitMQ搭建

2.搭建git地址

在流程中 首先我们应该在git或者码云上创建一个文件夹来专门获取配置 如图所示:

我的git地址:https://gitee.com/zcggit/study/,其中config专门来放置远程读取的配置信息

3.搭建RabbitMq

安装RabbitMq前需要安装erlang  

  无脑下一步即可

 

4.创建Eureka注册中心

pom.xml引用

5.搭建Config-Server

(1) 引用Maven依赖

<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>zcg.springcloud.com</groupId>
<artifactId>springcloud-configServer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-bus-parent</artifactId>
<version>2.0.0.RC2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<!-- SpringBoot整合Web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--spring-cloud 整合 config-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>

<!-- SpringBoot整合eureka客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>

<!--核心jar包 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<!-- actuator监控中心 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

</project>

(2).引用application.yml配置信息###服务注册到eureka地址

其中

cloud:
config:
server:
git:
###git环境地址
uri: https://gitee.com/zcggit/study.git   代表git的地址
force-pull: true     代表强制从git上强制拉取覆盖本地  我找这个错就找了一下午

 

####搜索目录
search-paths:- config     git上的搜索路径
label: master  从git的主干上读取

(3)。建立启动类

 

读取配置文件http://127.0.0.1:8763/configclient-dev.yml,如果能够访问成功,证明搭建成功 如图所示:

 

6.搭建Config-Client

(1)引用Maven依赖

<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>zcg.springcloud.com</groupId>
<artifactId>springcloud-configClient</artifactId>
<version>0.0.1-SNAPSHOT</version>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-bus-parent</artifactId>
<version>2.0.0.RC2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>

<!-- SpringBoot整合Web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
<!-- SpringBoot整合eureka客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
<!--核心jar包 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<!-- actuator监控中心 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

</dependencies>
<!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>



</project>

(2)bootstrap.yml配置代码

 

 

 

这里客户端的配置名为bootstrap.yml  这里有坑  因为Springboot在Spring启动前就bootstrap.yml,然后再加载application.yml文件

(3)编写config-Client的类

其中@RefreshScope代表  如果代码中需要动态刷新配置,在需要的类上加上该注解就行

搭建完成  访问http://localhost:8882/getUserName  就可以读取配置上的文件 如图所示:

 

当修改git上的配置文件时,使用postman请求http://127.0.0.1:8882/actuator/bus-refresh  即可将所有的configClient的相关配置修改,重新访问即可得到配置文件的最新配置 如图所示:

如果有疑问,请加我QQ:1051980588  一起探讨学习。我会把所有代码上传到gt上  自行下载 看看

 

以上是关于SpringCloud的分布式配置及消息总线的主要内容,如果未能解决你的问题,请参考以下文章

springcloud:配置中心和消息总线(配置中心终结版)

springcloud:配置中心和消息总线(配置中心终结版)

SpringCloud集成Bus消息总线

springcloud-消息总线Bus

SpringCloud(Greenwich版)Bus消息总线

基于Kafka实现的Spring Cloud消息总线