自学 spring-cloud 系列,越来越感觉 spring-cloud 很强大!
主要分为以下几篇:
介绍
在之前的 Spring Cloud Config 的介绍中,我们还留了一个悬念:如何实现对配置信息的实时更新。
通过/refresh 接口和 Git 仓库的 Web Hook 来实现 Git 仓库中的内容修改触发应用程序的属性更新这是一个好的方法,但是我没讲,因为:若所有触发操作均需要我们手工去维护 Web Hook 中的应用位置的话,这随着系统的不断扩张,会变的越来越难以维护,而消息代理中间件是解决该问题最为合适的方案。是否还记得我们在介绍消息代理中的特点时有提到过这样一个功能:消息代理中间件可以将消息路由到一个或多个目的地。利用这个功能,我们就能完美的解决该问题,下面我们来说说 Spring Cloud Bus 中的具体实现方案。
本次使用 Rabbit MQ 来进行实验,没有使用其他消息队列。
安装 Rabbit MQ
可以参考我的文章 RabbitMQ 的安装和使用
其用户名和密码是: guest/guest
架构
这时 Spring Cloud Bus 做配置更新步骤如下:
- 1、提交代码,利用 git 的 webhook 触发 post 请求给 bus/refresh
- 2、server 端接收到请求并发送给 Spring Cloud Bus
- 3、Spring Cloud bus 接到消息并通知给其它客户端
- 4、其它客户端接收到通知,请求 Server 端获取最新配置
- 5、全部客户端均获取到最新的配置
这样的话我们在 server 端的代码做一些改动,来支持 bus/refresh
开始之前:
我想说,项目源码使用模块编程,因为之前的版本原因,client 端注册到了 eureka 服务端,所以启动项目应该也要启动 eureka 的服务端。然后在启动 config 服务端,最后启动我们的 config-client 端,启动 config-client 要使用 profile 方法启动,这个之前我们已经使用了好多次。
修改 server 端
pom 增加如下:
<!--消息总线-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<!--config-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-monitor</artifactId>
</dependency>
其中 bus-amqp 就是消息总线,用来利用 rabbitmq 来进行消息通讯。monnitor 就是在 server 端设置一个监听,来接收我们发送的 post 信息,告诉它我们更新了配置,你可以开始刷新已经注入的值了。
配置文件:
management.security.enabled=false
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
management.security.enabled
可以将刷新设置密码取消,因为我们是在测验,所以不需要密码。如果是你们公司内网的话,有物理隔离,应该也不需要密码。
client 端
讲道理,client 端不需要做什么修改
management.security.enabled=false
如果真的需要的话,加上这个,防止不能够刷新。
测试
访问 http://localhost:8087/hi
得到 123
修改 git 里文件的值为 2222222222
github 是有 webhook 的,你们公司私人的 git 应该也有 webhook,但是 github 的 webhook 不能访问我 localhost 呀,所以这里利用 postman 进行刷新操作来模拟 webhook
重新访问 http://localhost:8087/hi
得到 2222222222
同时,查看日志,发现值已经刷新,并且进行重新注册到了服务中心。
感觉,很酷哦!100 酷!
示例源码
所有源码在我的 github 仓库里,传送门:https://github.com/xjtushilei/spring-cloud-simples.git
支持
如果你喜欢~ 给个星
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于