前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spring-cloud-config + spring-cloud-bus实现动态刷新集群配置

spring-cloud-config + spring-cloud-bus实现动态刷新集群配置

作者头像
RedSheep
修改2019-10-31 22:18:28
1.1K0
修改2019-10-31 22:18:28
举报
文章被收录于专栏:技术男的宅之路

本文以 rabbitmq来实现消息传递

安装 rabbitmq请移步:http://blog.csdn.net/red_sheeps/article/details/78386303 以下 demo代码详见:https://github.com/GloryXu/test-spring-boot

准备项目及模块

  • 首先得需要一个配置中心,就是git的一个专门存放配置的项目,如:config-repo,用于cloud-server拉取配置
  • cloud-server项目必不可少,用以从git项目拉取配置文件,同时也会在本地缓存一份,默认存放地址为/tmp
  • cloud-client项目,用于从cloud-server项目获取配置信息,验证配置是否实时刷新

config-repo目录结构

  • config-repo实际上就是config-server的git.uri配置(以下说明详见config-server配置)
  • didispace和msg_dispatcher即为git.search-paths配置,扫描所有的配置文件目录
  • XXXX-dev.properties、XXXX-test.properties即为配置具体配置文件,后面的dev和test相信大家也都猜到,就是环境信息,命名规范才能正确找到并加载配置文件信息
  • 还有一个信息,项目的分支信息,因目录结构不好体现,后续config-server再行说明

spring-cloud-server配置详解

  • uri,即是git的clone地址
  • search-paths,即是配置中心config-repo项目下的一级目录
  • username,即为登陆git的用户名
  • password,即为登陆git的密码
  • force-pull,配置当本地目录与远程配置有冲突时是否强制拉取配置 代码很简单,即为标准的spring-boot项目启动代码
  1. 另外,本案例是使用rabbitmq来实现消息总线的功能,当然少不了其相关配置,如下:

(配置信息相对简单,此处不再说明)

  1. maven配置文件,除了config-server的依赖还需添加bus的相关依赖
代码语言:javascript
复制
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

config-client项目配置及代码示例

注意:config-client的配置文件名为,bootstrap.yml,spring-boot项目默认bootstrap.yml加载优先与application.yml。也好理解,只有先获取了配置信息,诸如@Value,${"param"}才能正常被注入值 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5NWc7Gmj-1569687471452)(http://img.blog.csdn.net/20171029173658724?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcmVkX3NoZWVwcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]

  • spring-application-name,应用名与配置中心{application}-dev.properties中的application对应
  • uri,默认的搜寻地址为localhost:8888,其他的config-server地址可自行替换
  • profile,即为配种中心的环境标志,与didispace-{profile}.properties中的profile相对应
  • label,即为git项目中的分支,默认值为master
  • 对于客户端也需要加上rabbitmq的配置信息(同config-server)
  • maven依赖如下,因为需要refresh接口刷新配置,所以需要加上actuator的依赖
代码语言:javascript
复制
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

验证

  • 启动client两个实例及config-server项目
代码语言:javascript
复制
java -jar target/config-client-0.0.1-SNAPSHOT.jar --server.port=8887
java -jar target/config-client-0.0.1-SNAPSHOT.jar --server.port=8886
  • demo中写一个简单的restful接口用于返回配置文件中的信息
代码语言:javascript
复制
@Value("${from}")
    private String from;

    @RequestMapping("/from")
    public String from() {
        return this.from;
    }
  • 在配置中心config-repo的didispace-dev.properties配置文件中添加该属性 from=git-dev-3.0
  • 分别访问8887和8886两个端口查看,访问正常
  • 此时修改并push配置中心的属性值,修改为 from=git-dev-4.0
  • 此时需要post访问config-server的/bus/refresh接口进行刷新配置
  • 再次访问client的两个实例

看到from访问的接口返回值均已改变。

觉得有帮助,欢迎关注
觉得有帮助,欢迎关注
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爪哇之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备项目及模块
  • config-repo目录结构
  • spring-cloud-server配置详解
  • config-client项目配置及代码示例
  • 验证
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档