您的位置:首页 > 编程语言 > Java开发

SpringCloud入门学习笔记8--消息总线组件SpringCloudBus

2020-01-12 12:59 585 查看

一、SpringCloudBus简介

SpringCloudBus是用轻量的消息代理将分布式的节点连接起来,可以用于广播配置文件的更改或者服务的监控管理。一个关键的思想就是:消息总线可以为微服务做监控,也可以实现应用程序之间相互通信。 SpringCloudBus可选的消息代理包括RabbitMQ、 AMQP和Kaka等。如果我们想在不重启微服务的情况下更新配置如何来实现呢? 答案就是使用SpringCloudBus来实现配置的自动更新。

二、代码实现

(1)demo_config的pom.xml 添加依赖

[code]        <!--bus 服务器端依赖-->
<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)修改demo_config 的application.yml ,在原配置下面添加配置

[code]  rabbitmq:
host: 127.0.0.1
management: #暴露触发消息总线的地址
endpoints:
web:
exposure:
include: bus-refresh

(3)配置客户端

以demo_base模块为例,加入消息总线

1. 修改demo_base工程 ,pom.xml引入依赖

[code]        <!--bus 依赖 -->
<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>
<!--bus 监听 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2. demo_base模块下 TestController修改result方法,打印配置中的端口号。添加注解 @RefreshScope //必须添加该注解 否则springCloudBus无法正常更新

3. 在上传至码云的配置文件  base-dev.ym 中添加rabbitMQ的地址:

[code]rabbitmq:
host: 127.0.0.1

4. 依次启动demo_eureka 、demo_config和demo_base ,浏览器输入  http://localhost:9001/test/111,访问成功

5. 接来下我们修改码云上面的 base-dev.ym配置,将demo_base的端口号改为123456(目的是测试我们修改了远程配置文件后是否能够通过SpringCloudBus在不重启微服务的情况下更新配置)

6. 不用重启,直接 浏览器输入  http://localhost:9001/test/111再次访问

 未受到影响,这说明我们配置的SpringCloudBus没有生效,检查一下配置并没有问题,那么问题出在哪了?

原因就是我们修改了远程配置,但是没有告诉后台我们有了更新, 下面就得依靠消息代理RabbitMQ来通知后端我们有了改动

我们先看一下RabbitMQ界面:

红框内是我们上次做测试创建的两个交换器,下面我重新启动一下demo_base模块,看看会发生什么

启动完成后上面多了一个名为springCloudBus的交换器,因为我们pom.xml以及base-dev.ym里面已经做了相应的配置,所以他在启动的时候如果发现没有这个交换器,就会自动为我们创建。

7. 我们只需要往这个交换器里面发送一条消息,springCloudBus就能自动为我们更新配置了,测试一下,打开postman,以post方式发送请求http://127.0.0.1:9999/actuator/bus-refresh(9999为我们之前在demo_config模块下做的端口配置)

发送请求后可以观察到demo_config  后台日志有了更新

再次访问  http://localhost:9001/test/111

下一篇:(补充)SpringCloud整合mybatis

  • 点赞
  • 收藏
  • 分享
  • 文章举报
大明同学ˇ 发布了8 篇原创文章 · 获赞 1 · 访问量 2233 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: