欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Springcloud-Bus部分学习笔记

程序员文章站 2022-07-13 08:33:24
...


视频学习地址:https://www.bilibili.com/video/BV18E411x7eT
源码地址:https://gitee.com/zhu_xinmiao/springcloud
spring cloud版本:H版

概述

Bus是什么

Springcloud-Bus部分学习笔记

Bus的作用

实际上就是原先Config动态刷新中,我们人工输入的curl刷新提醒,有中间件替我们完成了。

Springcloud-Bus部分学习笔记

什么是总线

Springcloud-Bus部分学习笔记

相当于我有一个微信公众号,大家订阅了我,我这一更新大家每个人都能收到这个更新。

如果学过消息队列(RabbitMQ、Kafka…)的话,这就相当于消息队列的广播模型。

设计思想

Springcloud-Bus部分学习笔记

1对应的是Bus是什么标题下的图

相当于小道消息的广播通知

2对应的是Bus的作用标题下的图

相当于*配置中心的广播通知

技术选型时我们更应该选择后者

实现

前期准备

这里使用的消息队列是RabbitMQ,并且选用的是设计思想中的第二种方法。

新建3366微服务,和3355搭建过程几乎完全相同,可参考我前一篇博文config部分学习笔记中的搭建过程。

这里唯一的区别是controller中有所不同,但和核心逻辑没有关联,只是为了和3355做一个输出的区分。

@RestController
@RefreshScope
public class ConfigClientController {
    @Value("${server.port}")
    private String serverPort;

    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/configInfo")
    public String configInfo(){
        return "serverPort: " +serverPort+ "\t\n\n configInfo: "+ configInfo;
    }
}

搭建总线支持(全局广播)

Springcloud-Bus部分学习笔记

改pom

这三个微服务的pom文件中都加上

<!--    添加消息总线RabbitMQ支持    -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

改yml

三个微服务中都加上,这个是spring下面一级的,一定要对齐,不懂的话可以看下我gitee中的源码

#spring:
    rabbitmq:
      host: localhost
      port: 5672
      username: guest
      password: guest

在3344的yml中额外加上

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

这里强调一下,也算是解释。但凡暴露端点的操作pom依赖中都要带上以下依赖,同时bus-refresh是actuator中的操作。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

测试

测试时千万记得打开RabbitMQ,不然3355和3366会跑不起来。

和上一篇config部分学习笔记类似,更改gitee中版本号后会发现3344刷新后直接更新了,而3355和3366没有更新。

与上一篇不同的是,这次我们不是单独去给3355,3366分别post,而是直接给3344发一个post请求,来做到一处刷新,处处刷新。

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

刷新测试页面后我们就可以看到,3355和3366的版本号也更新了。

更新前:

Springcloud-Bus部分学习笔记

更新后:

Springcloud-Bus部分学习笔记

定点通知

Springcloud-Bus部分学习笔记

这里我们测试只通知3366,不通知3355

3366更新前:

Springcloud-Bus部分学习笔记

输入curl -X POST "http://localhost:3344/actuator/bus-refresh/config-client:3366"。

这里config-client来自yml中的这里

Springcloud-Bus部分学习笔记

3366则是端口号,组合起来就是destination中需要填的内容。

更新后:

Springcloud-Bus部分学习笔记

Springcloud-Bus部分学习笔记

相关标签: springcloud