SpringCloud(七)消息总线Spring Cloud Bus

1.简介

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

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

2.运行原理

主要看蓝色线。
config服务器将配置文件修改的消息发送给MQ,微服务监听到后主动到远端仓库读取配置文件重新编译字节码文件。
**解决的问题:**避免了线上代码修改配置文件后还需要重新启动服务器。
在这里插入图片描述

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上
新加如图:
在这里插入图片描述

3.3启动测试

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

在这里插入图片描述

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

如图
在这里插入图片描述

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

4.此外

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

像夏天一样热

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值