消息总线(Spring Cloud Bus)
一、准备工作
本文还是基于上一篇文章来实现。按照官方文档,我们只需要在配置文件中配置 spring-cloud-starter-bus-amqp ;这就是说我们需要装rabbitMq,点击rabbitmq下载。至于怎么使用 rabbitmq,搜索引擎下。
erlang 下载地址 : https://www.erlang.org/downloads
rabbitmq下载地址:https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.21
1、搭建rabbitmq
记住erlang 和 rabbitmq是有版本依赖的。 本次rabbitmq是3.7.21版本那么erlang要下载19.3的其他的也行,本次拿19.3版本来演示了。
下载后先安装erlang,然后再继续安装rabbitmq,安装好后,一定要配置环境变量这个去百度就好了,很简单的。配置好后将rabbitmq启动,咋搜索框中搜索rabbitmq service start
启动之后,用cmd查看下状态: rabbitmqctl status
尾部显示出这个就代表启动成功了。
下面启动mq的管理端就好了,启动命令:rabbitmq-plugins enable rabbitmq_management
如上图就是启动完成,接下来访问管理端就可以了,打开浏览器输入url地址:http://127.0.0.1:15672/
输入账号:guest
输入密码:guest
然后登录,就进入了。
二、开始改造
1、改造config-client
pom.xml加入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
在 bootstrap.properties中加入以下信息
########## rabbit mq配置 #######
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.cloud.bus.enabled=true
spring.cloud.bus.trace.enabled=true
management.endpoints.web.exposure.include=bus-refresh
ConfigClentApplication.java 中加入注解
@RefreshScope
2、启动服务
接下来就是依次启动EurekaServe服务,ConfigServer服务,然后启动两个ConfigClient服务,用两个端口1218,1219;
3、开始测试
然后开始访问:localhost:1210
发现已经有三个服务注册进去。下面开始从配置中心读配置。
访问路径:http://localhost:1218/hi , http://localhost:1219/hi
现在开始更改配置中心的信息,改为 foo=foo version 3 update。
接下来访问发现还是一样并没有更新。
现在开始用消息服务总线去更新配置信息,用post方式访问:http://localhost:1218/actuator/bus-refresh
接下来看下:http://localhost:1218/hi
到这里我们发现消息服务总线实现配置中心的实时更新就完成了。
二、总结
以下是架构图,更容易分析。