我很难理解如何使用Netflix Archaius和Spring Boot Config.
我有一个微服务,可以从Spring Cloud Config Server获取配置,但我希望配置在更改时自动刷新.据我所知,通过从存储库中提取信息,可以在客户端使用Archaius实现这一点.
我已搜索但无法找到完成此操作的教程或示例.
我是 Netflix archaius 的新手。我有一个读取 Java 属性文件并打印属性值的代码片段。
当该程序运行时,它会打印 testproperty.properties 文件中名为“Fields”的属性的值。现在,当该程序运行时,我正在更新“Fields”属性的值,因此 archaius 应该动态获取更改值。但它仍在打印旧值。
在这个 Java 程序中使用 archaius 的正确方法是什么?或者在不重新启动程序的情况下更新程序中的属性?如果有人可以指出此代码片段中的更正,那将会很有帮助。
我想用Netflix archaius运行一个演示,所以我在我的项目中通过maven导入了archaius。
现在我正在更新我的属性文件。但它仍然打印旧的财产价值。(PS:我在驱动程序中保留了连续的 while 循环,以查看 archaius 是否在运行时选择更新属性值。我想这就是 archaius 应该做的。获取更新的属性而不重新启动应用程序。如果我错了,请纠正我。)
下面是我的代码片段:
import com.netflix.config.DynamicPropertyFactory;
import com.netflix.config.DynamicStringProperty;
public class PropertyChangetest {
public static void main(String args[]) {
DynamicPropertyFactory sampleProp = DynamicPropertyFactory.getInstance();
System.setProperty("archaius.configurationSource.defaultFileName", "TestProperty.properties");
System.setProperty("archaius.fixedDelayPollingScheduler.delayMills", "500");
while(true) {
DynamicStringProperty sampleProp1 = sampleProp.getStringProperty("fields","");
System.out.println(sampleProp1.get());
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的“TestProperty.properties”文件只有一个名为“字段”的属性。运行程序后,我正在更新我的属性文件,但它仍然打印旧值。
java netflix configuration-management apache-commons-config netflix-archaius
我正在尝试将 Archaius 与我的 Spring 应用程序一起使用来重新加载动态系统属性,而无需完全重新启动应用程序。我计划使用 Archaius 的回调机制来实现这一点。一旦 Archaius 检测到更改,我计划在回调方法中进行 bean 刷新以获取新的属性更改。
问题是,有一些在启动时创建的单例 bean,它们正在使用我想要重新加载的属性。我还有一些自动装配这个单例 bean 的类。
有没有办法在不执行重新启动或 applicationContext.refresh() 的情况下刷新 bean 及其所有依赖项?
或者Archaius有一个内置的库可以帮助Spring集成吗?
我正在使用Archaius来保持托管我的应用程序的所有服务器之间的系统属性.我可以看到所有属性getter都可以在该属性发生变化时调用回调(例如,参见第三个参数getStringProperty()),但我想监听任何属性更改.我可以实现一些接口并在某处注册为监听器吗?