文章目录

  • 1.简介
  • 2.运行原理
  • 3.快速上手
  • 3.1改造configServer服务器端
  • (1)在configServer管理配置的微服务中添加pom依赖
  • (2)添加configServer依赖的yml配置
  • 3.2改造需要监听配置文件修改的微服务(这个微服务相当于ConfigServer的一个客户端)
  • (1)在服务中添加依赖
  • (2)修改微服务的配置文件添加rabbitMQ地址
  • 3.3启动测试
  • 4.此外


1.简介

Spring cloud bus通过轻量消息代理连接各个分布的节点。这会用在广播状态的变化(例如配置变化)或者其他的消息指令。Spring bus的一个核心思想是通过分布式的启动器对spring boot应用进行扩展,也可以用来建立一个多个应用之间的通信频道。目前唯一实现的方式是用AMQP消息代理作为通道,同样特性的设置(有些取决于通道的设置)在更多通道的文档中。

可以将它理解为管理和传播所有分布式项目中的消息既可,其实本质是利用了MQ的广播机制在分布式的系统中传播消息,目前常用的有Kafka和RabbitMQ。

2.运行原理

主要看蓝色线。

config服务器将配置文件修改的消息发送给MQ,微服务监听到后主动到远端仓库读取配置文件重新编译字节码文件。

**解决的问题:**避免了线上代码修改配置文件后还需要重新启动服务器。

springboot nacos 通知消息_配置文件

3.快速上手

这篇是基于上一篇Springcloud(六)分布式配置Spring Cloud Config 的基础上修改的,此外还需要安装RabbitMQ.
消息中间件RabbitMQ介绍Docker环境安装rabbitMQ

3.1改造configServer服务器端

(1)在configServer管理配置的微服务中添加pom依赖
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-bus</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
        </dependency>
(2)添加configServer依赖的yml配置
rabbitmq:
  host: 你的rabbitMQ地址
management: #暴露出发消息总线的地址(固定格式)
  endpoints:
    web:
      exposure:
        include: bus-refresh

3.2改造需要监听配置文件修改的微服务(这个微服务相当于ConfigServer的一个客户端)

(1)在服务中添加依赖
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-bus</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
(2)修改微服务的配置文件添加rabbitMQ地址

我的配置文件在上Springcloud(六)分布式配置Spring Cloud Config 已经放倒了gitee上

新加如图:

springboot nacos 通知消息_spring_02

3.3启动测试

  1. 首先启动configServer,再启动配置的微服务客户端。 首先不改服务的配置文件查询一次,

springboot nacos 通知消息_微服务_03

  1. 然后修改配置文件,我是修改配置文件连接了一个新的数据库
  2. config服务主动发送一条指令告诉客户端(配置的微服务)远端仓库配置文件已发生改变

如图

springboot nacos 通知消息_微服务_04

  1. 再次发送请求查询数据库内容
    查出内容为新数据库内容。

4.此外

修改远端配置文件内容动态更新到服务只适用于spring框架自己的配置,如需修改自定义的配置,例如把修改后的自定义配置内容读取到controller,还需在controller中添加@RefreshScope注解,最好每个controller都提前加上这个注解,避免遗忘出错。