当我从我的属性存储库中更改一个值并重新启动 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 这样的消息代理。这个过程分为三个层次:
客户端应用程序和配置服务器订阅消息代理中的特定主题 ( /refresh )。
配置服务器将刷新事件发送到该主题(/refresh),一旦它被更新。(例如 application.properties 文件在 git 中更新)。
所有客户端应用程序都在监听刷新事件,当它们收到刷新消息时,它们将被更新
简而言之,我们可以使用pub-sub模型来更新我们的客户端应用程序。
添加回答
举报
0/150
提交
取消