Spring Cloud Config 无法动态更新属性

Spring Cloud Config fails to update properties dynamically

我有一个 Camel Spring 引导应用程序,我在其中打印 属性 的值,该值是使用 Spring 云配置服务器设置的(通过 Git 提交 ID插入)。问题在于,一旦将值提交给 Git,Camel 应用程序中 属性 的值就不会更新。我必须重新启动未能达到 Spring Cloud Config 服务器目的的 Camel 应用程序。请注意,我们在本地机器上使用 Git 文件系统。

属性文件的名称是 CamelSpringBootSample-dev.properties。

我一提交,配置服务器就会在端点刷新时发布更新后的值: http://localhost:8888/CamelSpringBootSample/dev

我还在以下位置提供了 Camel 应用程序端点: http://localhost:8181/actuator/env

此处 属性 的值不会在刷新时更新。但是,如果我重新启动 Camel 应用程序,该值正在反映。

三个项目的源代码都上传到github.com。

  1. 配置服务器:https://github.com/sreejeshraj/config-server

  2. Camel 客户端项目(使用配置服务器配置自身):https://github.com/sreejeshraj/camel-config-server 请不要被存储库名称 camel-config-server 误导。这是config server的client,但是我不小心把它命名错了,抱歉。

  3. 存储配置属性的本地 git 存储库:https://github.com/sreejeshraj/Git-Config

请注意,我在 Spring bean 组件 class.

中使用了注释 @RefreshScope

你能帮我解决这个问题吗?提前致谢。

您必须设置:

management.endpoints.web.exposure.include=refresh

bootstrap.propertiesbootstrap.yml.

并触发 /actuator/refresh 端点。

请注意,如评论中所述,Camel does not update its values when a Spring beans is refreshed and there is no plan to implement this feature. (https://issues.apache.org/jira/browse/CAMEL-13892). You probably could find a solution through Spring Cloud Bus

正如@ortomala-lokni 已经指出的那样,您需要在更新发生后刷新您的配置使用者

如果您想要一个 集中式解决方案 来完成此任务(自动刷新许多组件),请查看 Spring Cloud Bus

This page 很好地概述了该主题。

我的客户端中有 application.propertiesbootstrap.properties 文件。在这种情况下,您应该在 bootstrap.yml 中指定 spring.application.namespring.cloud.config.server.git.uri。我没有刷新 applicaiton.properties.

中有 spring.application.name 的属性