是否有任何记录良好的Apache ZooKeeper用例用于分发Java应用程序的配置,特别是Spring服务?
像许多云服务用户一样,我需要更改可变数量的Java服务的配置,最好是在运行时,而不需要重新启动服务.
UPDATE
最后,我最终写了一些东西,将ZooKeeper节点作为属性文件加载,并创建一个ResourcePropertySource并将其插入到Spring上下文中.请注意,这不会反映上下文启动后ZooKeeper节点的更改.
public class ZooKeeperPropertiesApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
private static final Logger logger = LoggerFactory.getLogger(ZooKeeperPropertiesApplicationContextInitializer.class);
private final CuratorFramework curator;
private String projectName;
private String projectVersion;
public ZooKeeperPropertiesApplicationContextInitializer() throws IOException {
logger.trace("Attempting to construct CuratorFramework instance");
RetryPolicy retryPolicy = new ExponentialBackoffRetry(10, 100);
curator = CuratorFrameworkFactory.newClient("zookeeper", retryPolicy);
curator.start();
}
/**
* Add a primary property source to the application context, populated from
* a pre-existing ZooKeeper node.
*/
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
logger.trace("Attempting to add …Run Code Online (Sandbox Code Playgroud) 有没有办法在.properties文件中包含条件语句?
喜欢:
if(condition1)
xyz = abc
else if(condition2)
xyz = efg
Run Code Online (Sandbox Code Playgroud)