Valentine 转载请标明出处。
前言:如果项目多个服务使用了某个配置,当我们修改配置信息的时候,我们希望服务的配置也跟着修改,但是我们就不得不一个一个服务的发送POST请求http://xxx:xxx/bus/refresh,或者关闭服务重新打开。这是比较麻烦的。 所以我们在这里使用消息中间件来完成配置的更新问题。
达到的目标: 当我们更新git仓库的配置信息的时候,所有使用了这个配置的服务都会刷新配置,实现分布式的动态配置
思路:我们的config-files配置文件中心,每修改一次文件(提交一次代码),就触发一个消息事件,发送消息到rabbitmq,然后监听了这个消息的客户机就发送http://xxx:xxx/bus/refresh的post请求,从而实现配置文件的动态刷新。
1、在本机安装RabbitMQ
安装教程:RabbitMQ安装教程,深入了解RabbitMQ
2、搭建eureka :服务的注册与发现、config-server:配置中心、config-client:配置客户端、config-files:配置文件统一存放处
1、搭建eureka:服务的注册与发现,到spring项目官网,根据以下截图教程下载项目(注意本次教程的springboot版本选择的是1.5版本)
eureka的github地址,项目的搭建过程如下图指引
以下是EurekaServer类、application.yml配置(注意,本人修改过本项目的项目路径)
2、搭建config-server: 配置中心,也是到spring项目官网,根据以下截图教程下载项目
config-server项目的github地址,项目的搭建过程如下图指引
要注意的是,要在下载好的项目里面的pom.xml文件里面增加spring-cloud-starter-bus-amqp的依赖
application.yml的配置文件截图
其余的类比较多,所以就不阐述了,请到github下载项目源码观看。
3、搭建config-client: 配置客户端,到spring项目官网,根据以下截图教程下载和搭建项目,
config-client项目的github地址,项目的搭建过程如下图指引
在下载好的项目里面的pom.xml文件里面增加spring-cloud-starter-bus-amqp、httpclient、httpcore的依赖
config-client的application.yml的配置文件内容,如下图
其余的类比较多,所以就不阐述了,请到github下载项目源码观看。
4、config-files:配置文件统一存放处,config-files项目的github地址
3、在config-files项目设置Webhook(每当有提交的时候都会触发一次)
因为在本机运行,所以外网不能访问本机,这时候需要使用内网转发,下载地址和教程地址:https://ngrok.com/download。
下载好以后,打开ngrok,输入命令authtoken xxxxx(你的注册授权码),然后输入命令 ngrok http 7070,这样外网就能访问你的本机,如下图
这样就能实现了每提交一次代码,就能发送消息到消息队列,然后config-client端根据消息发送http://xxx:xxx/bus/refresh 请求就能动态刷新配置。
成功的结果演示:先启动eureka、config-server、config-client
刷新配置,之后
到此,文章终结。这是本人的第一篇技术分享,希望对各位有所帮助。如果有什么疑惑,请到github地址下载源码项目观看,https://github.com/ValentineLiang?tab=repositories
网友评论