SpringCloud学习笔记——消息总线

本文介绍了在微服务架构中使用消息总线的概念,特别是通过Spring Cloud Bus结合RabbitMQ来实现实时配置更新。首先解释了消息代理的角色和RabbitMQ的基本原理,接着提供了一篇关于在Windows上安装RabbitMQ的参考链接。通过添加相关依赖和配置,演示了如何配置Spring Cloud Bus和RabbitMQ,使得配置中心可以实现真正的动态更新。最后提到了通过Web Hook与Git仓库集成,以自动触发配置刷新。
摘要由CSDN通过智能技术生成

在微服务的架构中,会使用轻量级的消息代理去构建一个消息主题,让微服务中所有的实例都连接上来,主题中生产出的所有消息会被所有实例监听并且消费,这就称之为消息总线,有点儿类似于计算机架构中的消息总线的概念。有了这样一条总线就可以很方便的广播一些需要所有实例知晓的消息,例如上一篇我们刚刚完成的配置变更。

消息代理

消息代理(Message Broker)是一种架构模式,它再各个应用之间进行调度通知的作用,并且降低应用间的耦合性,消息代理是一个中间件产品,核心就是一个消息的路由程序,实现消息的接受和分发。目前市面上有很多开源的成熟产品供大家使用,比如ActiveMQ,Kafka,RabbitMQ,RocketMQ等,目前Spring Cloud Bus仅支持RabbitMQ和Kafka,下面我们介绍一下如何使用RabbitMQ来实现消息总线。

RabbitMQ

RabbitMQ作为一款成熟的开源消息中间件,其基本概念和原理在搜索引擎中成千上万,我这里就不赘述了,有兴趣的同学可以大概了解一下RabbitMQ的各个定义,有利于后续的学习。

这里推荐一篇文章,详细的描述了在windows下如何正确安装RabbitMQ并启动管理平台,我把链接贴出来供大家参考:

https://blog.csdn.net/newbie_907486852/article/details/79788471

如果你访问http://localhost:15672/#/users能够成功显示管理平台登录界面,则说明你的安装成功了,使用guest/guest登录即可。

快速入门

在上一篇中我们实现了配置中心的服务化以及动态更新,但是动态更新其实仍然属于一种伪动态,因为实际上需要我们手动刷新/refresh接口才可以,接下来我们通过rabbitmq和Spring Cloud Bus来实现真正的动态更新。

我们继续使用前面的config-client项目,在项目中添加依赖spring-cloud-starter-bus-amqp:

implementation 'org.springframework.cloud:spring-cloud-starter-bus-amqp'

在bootstrap.yml配置文件中添加有关rabbitmq的连接配置,这里我使用了我自建的springcloud用户,如果你没有自建的话可以使用默认的guest用户:

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: springcloud
    password: 123456

然后我们启动两个config-client,端口号分别为7777和7778,此时按照之前的测试方法,当在git中修改from值后,再次调用http://localhost:7777/getFrom接口发现并没有返回最新值,此时POST调用http://localhost:7778/actuator/bus-refresh之后,再次请求http://localhost:7777/getFrom接口,会发现返回值已改变,说明我们的Spring Cloud Bus已经通过mq通知了所有应用刷新from值

最后我们在github的仓库setting中进行web hook的设置,webhook是指在你的git远程仓库发生变化时允许git向你设置的指定路径发送请求,这里要求稍微高一些,需要将我们的服务部署到服务器上并且通过外网可以正常访问,将我们的/bus-refresh路径填写上去就可以了,这里就不详细的介绍这个流程了,如果有机会在公司的项目中用到Spring Cloud Bus的话可以尝试一下web hook功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值