我是靠谱客的博主 无奈煎饼,最近开发中收集的这篇文章主要介绍SpringCloud Bus 消息总线概述和案例详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在上一篇文章https://blog.csdn.net/weixin_62661659/article/details/124421327?spm=1001.2014.3001.5501已经记录了SpringCloud Config的配置详解,但是存在了一个问题,假如有多个微服务3344/3355/3366,每个微服务都需要一遍手动post刷新,太麻烦,所以这篇来学习一下,一次广播通知,处处生效。

一、概述

1.是什么?
在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个共用的消息主题,并让系统中所有微服务实例都连接上来。由于该主题中产生的消息会被所有实例监听和消费,所以称它为消息总线。在总线上的各个实例,都可以方便地广播一些需要让其他连接在该主题上的实例都知道的消息。
Spring Cloud Bus 配合 Spring Cloud Config 使用可以实现配置的动态刷新。
在这里插入图片描述
Spring Cloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了Java的事件处理机制和消息中间件的功能。
Spring Clud Bus目前支持RabbitMQ和Kafka。
2.作用
Spring Cloud Bus能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改、事件推送等,也可以当作微服务间的通信通道。
在这里插入图片描述
3.基本原理
ConfigClient实例都监听MQ中同一个topic(默认是springCloudBus)。当一个服务刷新数据的时候,它会把这个信息放入到Topic中,这样其它监听同一Topic的服务就能得到通知,然后去更新自身的配置

二、RabbitMQ环境配置

Erlang和Rabbit是有对应版本的
1.安装Erlang
下载地址:http://erlang.org/download/otp_win64_21.3.exe
安装步骤:直接一直下一步(可以修改自己的安装位置)

2.安装rabbitmq
下载地址:https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.14
安装步骤:直接一直下一步(可以修改自己的安装位置)

3.进入到rabbitmq/sbin 目录下打开dos窗口
4.添加可视化插件:rabbitmq-plugins enable rabbitmq_management
在这里插入图片描述
在这里插入图片描述
5.启动rabbitmq
访问地址: localhost:15672
默认账户:guest 默认密码:guest
在这里插入图片描述
6.增加复杂度,再以3355为模板再制作一个3366(3344、3355的创建请看顶部链接)
为了区分访问时的内容,在3366controller里的代码:

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

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

    @GetMapping("/configInfo")
    public String getConfigInfo() {
        return configInfo + "我是" + serverPort + "端口";
    }
}

利用消息总线触发一个服务端ConfigServer的/bus/refresh端点,而刷新所有客户端的配置
在这里插入图片描述
7.修改配置文件,添加消息总线支持
cloud-config-center-3344
cloud-config-client-3355
cloud-config-client-3366 新加的东西是一样的

<!--添加消息总线RabbitMQ支持-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
#rabbitmq相关配置
rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

在这里插入图片描述
8.测试
启动Eureka7001、3344、3355、 3366
修改gitee仓库的内容
发送Post请求:curl -X POST “http://localhost:3344/actuator/bus-refresh”
一次发送,处处生效
访问:http://localhost:3355/configInfo
http://localhost:3366/configInfo

四、定点通知

只通知3355,不通知3366
curl -X POST “http://localhost:3344/actuator/bus-refresh/config-client:3355”

最后

以上就是无奈煎饼为你收集整理的SpringCloud Bus 消息总线概述和案例详解的全部内容,希望文章能够帮你解决SpringCloud Bus 消息总线概述和案例详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部