Bus

本专栏学习内容来自尚硅谷周阳老师的视频

有兴趣的小伙伴可以点击视频地址观看

在SpringCloud Config学习过程中,还遗留下来一个问题:当运维更新git上的配置信息时,要想更改所有的客户端服务,必须得手动给客户端服务发送post请求进行刷新。Bus可以很好的解决这个问题,实现一次发送,全部订阅者收到,有点类似于MQ中的Topic消息。

作用

Spring Cloud Bus 配合 Spring Cloud Config 使用可以实现配置的动态刷新。

Spring Cloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了Java的事件处理机制和消息中间件的功能。Spring Clud Bus目前支持RabbitMQ和Kafka。

什么是总线

在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个共用的消息主题,并让系统中所有微服务实例都连接上来。由于**该主题中产生的消息会被所有实例监听和消费,所以称它为消息总线。**在总线上的各个实例,都可以方便地广播一些需要让其他连接在该主题上的实例都知道的消息。

原理

ConfigClient实例都监听MQ中同一个topic(默认是springCloudBus)。当一个服务刷新数据的时候,它会把这个信息放入到Topic中,这样其它监听同一Topic的服务就能得到通知,然后去更新自身的配置。

动态刷新全局广播

前期准备

在上一章节中,我们创建了服务端3344以及客户端3355,为了演示全局广播,复制一个一摸一样的3355,端口为3366

设计思想

每次手动刷新去刷新服务端3344,再由3344转发到3355,3366。

实现

3344、3355、3366分别添加Bus依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

修改3344配置文件

#rabbitmq配置
spring:rabbitmq:host: 124.220.80.180port: 5672username: xxxpassword: xxx##rabbitmq相关配置,暴露bus刷新配置的端点
management:endpoints: #暴露bus刷新配置的端点web:exposure:include: 'bus-refresh' # 之后可以通过 localhost:3344/actuator/bus-refresh 来手动刷新

修改3355、3366配置文件

只需添加rabbitmq连接配置即可

rabbitmq:host: 124.220.80.180port: 5672username: xxxpassword: xxx

测试

此时手动修改git上的配置文件,并且给3344发送post请求,即可全局广播刷新3355、3366

curl -X POST http://localhost:3344/actuator/bus-refresh

动态刷新局部广播

有时候需求又不会是更新所有服务的配置文件,这时候可以请求局部广播,post请求如下

http://localhost:3344/actuator/bus-refresh/{destination}

这里的{destination}指的是注册到服务中心的服务名以及端口号,例如

curl -X POST http://localhost:3344/actuator/bus-refresh/config-client:3355

此时只刷新了3355,并没有刷新3366

如果想发送多个指定的服务,可以使用以下语句

curl -X POST http://localhost:3344/actuator/bus-refresh?destination=config-client:3355&config-client:3366

虽然会报语法不正确,但是是可以刷新的!

SpringCloud消息总线——Bus相关推荐

  1. java技术--SpringCloud:消息总线Bus简介及代码实现(18)

    1.消息总线Bus简介 (1)消息总线Bus的作用<1>在没有使用消息总线的时候,如果需要修改某个配置1.1.如果涉及修改的微服务节点比较多,需要手动的逐个节点的刷新非常麻烦1.2.在微服 ...

  2. SpringCloud教程-消息总线Bus 客户端(client)刷新(SpringCloud版本Greenwich.SR4)

    文章目录 消息总线(Bus)介绍 项目示例 config-client-bus 代码地址:github-spring-cloud地址 前言:前面文章讲了Spring Cloud Config配置中心如 ...

  3. SpringCloud config 配置中心集群配置以及整合消息总线BUS实现关联微服务配置自动刷新

    一.SpringCloud Config 基本配置中的问题 在上一章节<SpringCloud config 配置中心介绍与基本配置使用>中我们现实了配置中心的配置集中管理.调用微服务应用 ...

  4. 499、Java分布式和集群12 -【SpringCloud视图微服务 - 消息总线Bus】 2021.06.01

    目录 0.RabbitMQ 1.先运行,看到效果,再学习 2.pom.xml 3.bootstrap.yml 4.application.yml 5.ProductDataServiceApplica ...

  5. SpringCloud教程-消息总线Bus 服务端(server)刷新(SpringCloud版本Greenwich.SR4)

    文章目录 项目示例 config-server-bug 代码地址:github-spring-cloud地址 前言:本篇文章在上一篇文章基础上进行修改,因为虽然我们做到了利用一个消息总线触发刷新,而刷 ...

  6. iframe的src动态修改并刷新_微服务中配置中心Config+消息总线Bus,实现分布式自动刷新配置

    技术/杨33 一.分布式配置中心Config 一套集中的.动态的配置管理,实现统一配置微服务中的每个子服务. Spring Cloud Config为微服务架构提供了集中化的外部配置支持,配置服务器为 ...

  7. (三)springcloud 消息总线-spring cloud bus

    RabbitMQ 1.RabbitMQ环境:略 2.每个服务都添加依赖,或者聚合工程中统一添加 <dependency><groupId>org.springframework ...

  8. SpringCloud微服务架构,Config 分布式配置中心,Bus 消息总线, Stream 消息驱动,Sleuth+Zipkin 链路追踪

    Config分布式配置中心 Config 概述 概述 • Spring Cloud Config 解决了在分布式场景下多环境配置文件的管理和维护. • 好处: • 集中管理配置文件 • 不同环境不同配 ...

  9. 微服务-消息总线 SpringCloud Bus

    1. why 上篇中的配置中心服务端可以实现从远程仓库拉取实时变更的配置, 但是客户端无法直接实现配置更新, 需要向客户端发送一个post请求刷新配置(/actuator/refresh), 客户端微 ...

最新文章

  1. ubuntu14.04系统扩容的方法
  2. np.random.seed用法
  3. 解决无法删除的dll文件
  4. [Postman]排除API请求(9)
  5. 职高中专的模块化课程设计难点
  6. 浅析SparkRPC源码(spark2.11)
  7. java 关键字 sizeof_Java 基本数据类型 sizeof 功能
  8. java 方法的返回值(翻译自Java Tutorials)
  9. 对某目录下的文件按照日期进行排序
  10. CANoe软件安装失败
  11. PYTHON爬虫——谷歌(Google)图片关键词爬取
  12. css 一直图片适配所有手机背景图
  13. STM32F103_study62_The punctual atoms(Clock system initialization function analysis)
  14. swagger换新UI
  15. ImageBox网页图片批量下载器
  16. 绝对好用!Java 变量名蛇形转驼峰方法
  17. linux 服务器运维常用命令
  18. 安卓11:android studio出现:Executing tasks: [:app:assembleDebug] in project D:\Android studio\New start
  19. WPF 使用 MaterialDesign 控件库
  20. Android开源源码

热门文章

  1. 真的看不见我? 潜入类游戏敌兵AI的界定
  2. py遍历文件夹合并pdf文件
  3. 一种单按键开机/关机电路原理
  4. 福建数字校园一卡通投入使用一卡一刷就搞定
  5. 网络安全合规-PPT讲解思路
  6. input标签怎么取消边框
  7. H5 腾讯地图无法导航
  8. python回归代码_一元回归1_基础(python代码实现)
  9. VisionPro文档 -- 在单个作业里的多相机采集
  10. Linux 系统的目录结构