【Spring Cloud】分布式必学springcloud(十)——消息总线 SpringCloud Bus

一、前言

      在上篇博客中,向大家介绍了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,可以看到新的内容。

四、小结

      多尝试,多实践。

猜你喜欢

转载自blog.csdn.net/kisscatforever/article/details/80073662