为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Cloud - 配置客户端缓存属性

Spring Cloud - 配置客户端缓存属性

莫回无 2021-09-12 16:37:54
当我从我的属性存储库中更改一个值并重新启动 Spring Cloud Config Server 时,这些更改不会反映在它的使用者身上。我的微服务/application.properties:spring.application.name=my-servicespring.cloud.config.uri=http://localhost:8888我的服务控制器.java@RestControllerpublic class MyServiceController {    @Autowired    private Configuration configuration;    @GetMapping("/my-service")    public MyServiceBean retrieveMyServiceProperties() {        // show propertie's values        return new MyServiceBean(configuration.getPropertie1(), configuration.getPropertie2());    }}spring-cloud-config-server/application.propertiesserver.port=8888spring.application.name=spring-cloud-config-serverspring.cloud.config.server.git.uri=file://pathGit 仓库我的服务.propertiesmy-service.propertie1=1my-service.propertie2=2当我向localhost:8080/my-service发送 GET 请求时,这就是我得到的结果:{     "propertie1":1,   "propertie2":2}好吧,没关系!但是,如果我更改my-service.properties并重新启动 Spring Cloud Config Server,这些更改不会反映MyServiceController. 我确实需要重新启动my-microservice应用程序,以使更改生效。这是正常行为吗?我的意思是,如果这是远程的,那么应该配置是否缓存。
查看完整描述

2 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

要更新您的客户端应用程序,最好使用像 RabbitMQ 或 Apache Kafka 这样的消息代理。这个过程分为三个层次:

  1. 客户端应用程序和配置服务器订阅消息代理中的特定主题 ( /refresh )。

  2. 配置服务器将刷新事件发送到该主题(/refresh),一旦它被更新。(例如 application.properties 文件在 git 中更新)。

  3. 所有客户端应用程序都在监听刷新事件,当它们收到刷新消息时,它们将被更新

简而言之,我们可以使用pub-sub模型来更新我们的客户端应用程序。


//img1.sycdn.imooc.com//613dbc8b0001218125580688.jpg

查看完整回答
反对 回复 2021-09-12
  • 2 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信