SpringCloud入门学习笔记8--消息总线组件SpringCloudBus
一、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
- 点赞
- 收藏
- 分享
- 文章举报
- 学习笔记:微服务15 spring cloud kafka 消息总线
- SpringCloud入门之消息总线 springcloud bus
- Spring Cloud 入门教程(十):和RabbitMQ的整合 -- 消息总线Spring Cloud Netflix Bus
- SpringCloud入门教学|第七篇:消息总线(Spring Cloud Bus)
- 消息总线组件SpringCloudBus
- Spring Cloud学习:07消息总线(Spring Cloud Bus)
- Spring Cloud 入门教程(十):和RabbitMQ的整合 -- 消息总线Spring Cloud Netflix Bus
- 第八篇: 消息总线(Spring Cloud Bus)
- 第八篇: 消息总线(Spring Cloud Bus)
- SpringCloud学习笔记(9)——消息总线:Spring Cloud Bus
- Spring Cloud (3) | spring cloud bus 消息总线kafka应用
- Spring Cloud 学习笔记——入门、特征、配置
- 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)
- 第八篇: 消息总线(Spring Cloud Bus)
- Spring Cloud Bus 消息总线集成Kafka
- Spring Cloud 学习笔记——入门、特征、配置
- springcloud学习笔记(十二) 消息总线(Spring Cloud Bus)
- springCloud 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)
- java版spring cloud+spring boot+redis社交电子商务平台(八)消息总线(Spring Cloud Bus)
- SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)