spring-cloud-consul配置中心获取指定路径下的配置

一、consul配置中心存在的问题:

我们使用consul作为配置中心时,在springboot项目的配置文件中一般会添加如下配置

spring:
  profiles:
    active: dev
  application:
    name: customer-service
  config:
    import: optional:consul:localhost:8500
  cloud:
    consul:
      health-indicator:
        use-services-query: false
      # 配置中心相关配置
      config:
        enabled: true #是否启用配置中心功能
        format: yaml #设置配置值的格式
        data-key: ${spring.application.name} #配置key的名字,由于Consul是K/V存储,配置存储在对应K的V中
        watch:
          # 是否开启自动刷新,默认值 true 开启
          enabled: true
          # 刷新频率,单位:毫秒,默认值 1000
          delay: 10000
        prefixes: config

按照上面的配置,从程序启动日志中可以发现程序会到consul服务端的如下4个地方查询对应的配置。

问题: 也就是说会发出http请求4次到服务端,然而我们的配置一般在固定的一个路径下(上面4个中的一个),显然请求4次是有点浪费性能。

二、解决方法

我们需要了解consul为什么会到上面提到的4个路径里找配置呢?通过浏览源码我们发现是在如下的源码中指定的:

而且同时发现: 有getCustomContexts方法是可以自定义查找路径的

具体的配置如下

spring:
  profiles:
    active: dev
  application:
    name: customer-service
  config:
    import: optional:consul:localhost:8500config/application
  cloud:
    consul:
      health-indicator:
        use-services-query: false
      # 配置中心相关配置
      config:
        enabled: true #是否启用配置中心功能
        format: yaml #设置配置值的格式
        data-key: ${spring.application.name} #配置key的名字,由于Consul是K/V存储,配置存储在对应K的V中
        watch:
          # 是否开启自动刷新,默认值 true 开启
          enabled: true
          # 刷新频率,单位:毫秒,默认值 1000
          delay: 10000
        prefixes: config

这次再启动通过日志发现只发起请求一次:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值