Spring Cloud 系列之消息总线 Bus

1.1 简介

1.1.1 概述

  Spring Cloud Bus 是用轻量的消息代理将分布式的节点连接起来,可以用于广播配置文件的更改或者服务的监控管理。也就是消息总线可以为微服务做监控,也可以实现应用程序之间相互通信。Spring Cloud Bus 是 Spring Cloud 的一个子项目,它基于 AMQP 协议(高级消息队列协议,用于消息的生产和消费),我们可以使用 RabbitMQ 或 Kafka 来实现一个基本的基于 AMQP 协议的应用,来支持消息中间件的接入。我们可以借此来实现 Spring Cloud Config 自动刷新的策略,只需要架设好消息中间件,编写好属性服务端和远端仓库之间的连接,即可实现自动刷新(其实是半自动)。

在这里插入图片描述


1.1.2 相关依赖

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





1.2 简单使用

1.2.1 环境准备

我们这里使用 rabbitmq,所以需要安装 erlang 以及 rabbitmq

1.2.2 Config 服务端配置

# 增加如下配置
spring:
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest

# 暴露刷新端点
management:
  endpoints:
    web:
      exposure:
        include: bus-refresh

1.2.3 Config 客户端配置

  需要注意的是在客户端除了需要增加以下配置连接 mq 以外,还需要在 controller 添加 @RefreshScope 注解

# 增加如下配置
spring:
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest

1.2.4 测试

  我们修改完 git 上的配置文件之后,发现从服务端获取的配置更新了但是从客户端获取的配置依旧没有更新,这是因为需要我们给 config server 发送 post 请求让他去通知客户端刷新配置。这也是为什么称他是半自动的原因。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  我们用 post 让 config server 去通知客户端刷新配置,其流程是访问的 actuator/bus-refresh 节点,来实现刷新本服务的同时,将刷新动作推送至消息中间件,通知其它连接了消息中间件的客户端进行自动刷新操作。请求刷新之后可以看到控制台刷新了配置,请求客户端配置信息也更新了。需要注意的是如果 config 使用了 security 那么 config server 就需要关闭 csrf,否则执行刷新操作时会返回 403
在这里插入图片描述
在这里插入图片描述
  我们可以在 rabbit 的控制台发现一个 springCloudBus 的 topic,就是通过它来实现的刷新操作
在这里插入图片描述




☞ 源码



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值