chenypgg
小短脚
2018-03-27 05:58
采纳率: 0%
浏览 2.6k

spring cloud config刷新client配置问题

如题:
我们都知道,spring cloud config消息总线分服务端(简称server)和客户端(简称client),如果我们要对client的一些配置信息做修改时,只需要在git上修改对应client的配置文件,然后使用Post方式调用server的/bus/refresh?destinace=clientName:clientPort即可达到热更新的效果,但是我在使用过程中发现,并非client的所有配置都可以使用这样的方式进行热更新,所以,到底可以更新client的哪些配置我目前还是迷糊中的。
我现在有一个demo,server的配置文件或者我配置的是git,client的环境有两个版本,一个是开发版,即dev,还有一个是测试版本,即test,这两个版本中,其中有一个配置不一样,那就是数据库的连接,开发版本有开发数据库,测试版本有测试数据库,所以我希望使用spring cloud config server来进行client的数据库配置更新,client项目中只一个bootstrap.yml文件,里面只配置了eureka,zipkin,config的相关信息,这部分是不会变的,client的数据库配置和其他配置是放在git上的,当我在git上修改了client的数据库配置,比如url,然后调用server的/bus/refresh接口,观察到client确实是刷新了spring.datasource.url信息,项目本身没有报错,但是当我通过client的接口获取数据库名的时候,发现获取到的还是refresh之前的数据库名,并非我在git上配置的数据库,配置jdbcTemplate是直接使用springboot默认的配置,没有手动申明druidDataSource和jdbcTemplate(经过测试就算手动配置也是一样的结果),我已经在dao层加入了@RefreshScope注解
请问各路大神,这个问题如何解决呢?
另外还有一个问题,我想把logback的配置文件也放到git上,然后通过server来refresh client的logback日志配置信息,这个又应该如何实现?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • lin351550660
    lin351550660 2021-01-27 14:32

    1、数据库是用的连接池,你想刷新的时候直接切换数据库源,那么就要断开和数据的连接,再刷新 再重连,所以不存在刷新一下配置就能切换数据库的

    2、你想修改logback的保留日期什么的 倒是可以做,就是logback里面引用config设置的某个值,当日刷新起不起作用没试过,这个应该也要看一下源码,按道理说这个都不支持刷新的。除非你自定义log打印的类(这个可以做)。取值用config里的。

    点赞 评论

相关推荐