前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Cloud 系列之消息总线 Bus

Spring Cloud 系列之消息总线 Bus

作者头像
Demo_Null
发布2020-11-13 15:11:24
3680
发布2020-11-13 15:11:24
举报
文章被收录于专栏:Java 学习Java 学习

1.1 简介

1.1.1 概述

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

在这里插入图片描述
在这里插入图片描述

1.1.2 相关依赖

代码语言:javascript
复制
<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 服务端配置

代码语言:javascript
复制
# 增加如下配置
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 注解

代码语言:javascript
复制
# 增加如下配置
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,就是通过它来实现的刷新操作

在这里插入图片描述
在这里插入图片描述

☞ 源码

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 简介
    • 1.1.1 概述
      • 1.1.2 相关依赖
      • 1.2 简单使用
        • 1.2.1 环境准备
          • 1.2.2 Config 服务端配置
            • 1.2.3 Config 客户端配置
              • 1.2.4 测试
              相关产品与服务
              消息队列 TDMQ
              消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档