您当前的位置: 首页 >  微服务

微服务技术系列教程(32) - SpringCloud-消息总线

杨林伟 发布时间:2019-12-16 20:28:51 ,浏览量:2

引言

之前有写过SpringCloud分布式配置中心的博客《微服务技术系列教程(24) - SpringCloud- 分布式配置中心》,主要讲解并实现了SpringCloud是如何在不启动服务器的情况下刷新配置文件,其原理图如下: 在这里插入图片描述 但是微服务里面有很多个ConfigClient的,如果一个全局配置文件修改了,那么每个CofingClient微服务都要主动去请求。

想想,有没有一种方法可以可以只通知一个微服务就可以广播给所有的微服务以达到所有微服务自动更新配置文件。没错,就是本文讲到的SpringCloud 消息总线。

在这里插入图片描述

1.消息总线

在微服务架构中,通常会使用轻量级的消息代理来构建一个共用的消息主题来连接各个微服务实例,它广播的消息会被所有在注册中心的微服务实例监听和消费,也称消息总线。

SpringCloud中也有对应的解决方案,SpringCloud Bus 将分布式的节点用轻量的消息代理连接起来,可以很容易搭建消息总线,配合SpringCloud config 实现微服务应用配置信息的动态更新。

消息代理属于中间件。设计代理的目的就是为了能够从应用程序中传入消息,并执行一些特别的操作。开源产品很多如ActiveMQ、Kafka、RabbitMQ、RocketMQ等 。

2.代码实现

本文是基于前面博客的代码来实现的:《微服务技术系列教程(24) - SpringCloud- 分布式配置中心》,所以直接讲解消息总线了,前面的步骤不再详述。

大致过程如下:

1.克隆代码并导入IDEA:https://github.com/ylw-github/SpringCloud-DynamicConfig-Demo.git

2.导入三个项目 在这里插入图片描述 3.添加maven依赖:



	org.springframework.cloud
	spring-cloud-starter-bus-amqp



	org.springframework.boot
	spring-boot-starter-actuator

4.application.yml添加:

###开启bus刷新
management:
  endpoints:
    web:
      exposure:
        include: bus-refresh

5.运行RabbitMQ,集成的消息总线默认使用本地的RabbitMQ

 ./rabbitmq-server -detached

6.依次启动Eureka-Server、Config-Server、Config-Client

可以在本地RabbitMQ可以看见SpringCloudBus交换机: 在这里插入图片描述 还可以看到SpringCloud默认帮我们创建了两个队列: 在这里插入图片描述 7.复制Config-Client项目,修改端口(8883)以及服务名(config-client1),在Eureka注册中心可以看到: 在这里插入图片描述 8.浏览器输入:http://localhost:8882/getUserInfo、http://localhost:8883/getUserInfo,可以看到: 在这里插入图片描述 9.修改Github配置文件: 在这里插入图片描述 10.PostMan post请求:http://127.0.0.1:8882/actuator/bus-refresh

11.最后请求http://127.0.0.1:8883/actuator/bus-refresh,发现127.0.0.1:8883的也跟着修改了。

在这里插入图片描述 在这里插入图片描述

关注
打赏
1688896170
查看更多评论

杨林伟

暂无认证

  • 2浏览

    0关注

    3279博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0470s