Spring-cloud微服务实战【十】:消息总线Bus
回忆一下,在上一篇文章中,我们使用了分布式配置中心config来管理所有微服务的配置文件,那这样有没有什么问题?有,那就是无法配置文件无法自动更新,当我的git服务器上的配置文件更新后,不能同步更新到config-server,需要config-server重启才能生效,这在生产环境下,肯定是不可以的,我们需要当git服务器的文件更新后,自动同步到config-server,并且config-server不需要重启就能获取到最新的配置,因此我们需要借助spring cloud bus消息总线来实现该功能.其实spring cloud bus 本质上是利用MQ(消息中间件,常用的是RabbitMQ或者kafka)实现消息的推送功能.
spring cloud bus的使用
上面我们说到spring cloud bus需要借助MQ,本文中我们借助RabbitMQ来实现该功能.首先需要我们在本机安装好RabbitMQ(安装过程就不再说了,大家发挥各自的聪明才智吧~),然后启动RabbitMQ:
以上打印信息说明已经启动好了,让我们登录网页版的控制台看一下,rabbitMQ控制台默认端口号15672:
出现该页面说明rabbitMQ已经成功启动了,大家可以用默认的账号密码guest/guest登录进去看一下:
然后我们将[dhp-micro-service-config-server]复制一份为[dhp-micro-service-config-bus-server]:
然后新增maven依赖:
配置文件我们改造一下,使用yml文件,并且新增rabbitMQ相关配置,并且由于需要暴露refresh的地址,因此方便起见直接使用星号表示暴露全部地址:
然后启动试一下:
说明已经成功了,然后现在将[dhp-micro-eureka-server-config]复制一份为[dhp-micro-eureka-server-config-bus]:
然后新增maven依赖:
然后修改git服务器上的配置文件,新增rabbitMQ的相关配置,以及新增一些用于测试自动刷新的内容:
修改[dhp-micro-eureka-server-config-bus]代码,新增user.config的相关配置:
然后启动[dhp-micro-eureka-server-config-bus]:
接下来我们测试一下自动刷新,首先修改git服务器上的用户相关信息:
然后再访问一下用户信息的地址:
嗯?什么情况?没有成功?是配置出现问题了吗?还是其他什么问题?其实不是的,我们说现在eureka-server作为config-server的一个消费者,通过rabbitMQ进行监听,现在config-server并没有发出消息通知,消费者自然不能接收到更新信号了,因此我们需要在在config-server手动发一个信号:
在1.X的版本时,可以直接使用GET请求访问,2.X版本只能使用POST请求,因此我们借助Postman来发送post请求:
此时再看一下userConfig信息:
这样自动刷新就成功了.但是生产环境不可能每次都需要我们手动发起请求,因此我们可以借助git的webhook的方式,自动帮助我们刷新:
这里的Payload URL填写我们的刷新地址即可,比如:
但是要注意这个地址必须是公网地址,否则公网访问不了不生效!
自此,我们的整个微服务spring cloud就结束了,喜欢的童鞋们请赶紧收藏吧!
本文由博客一文多发平台 OpenWrite 发布!