我是靠谱客的博主 开心画笔,这篇文章主要介绍Netflix archaius动态配置工具使用,现在分享给大家,希望可以做个参考。

1、解决问题和使用场景

很多项目有配置改变了而不需要重启项目这样的需求,比较暴力的解决方法是写一个定时任务轮询去获取配置信息,然后可以全局获取这些实时更新的配置信息。Netflix archaius针对这一使用场景,对数据源的获取、获取策略(主要是定时策略)和获取全局配置信息进行了封装,实现了动态获取配置数据。

2、使用例子

需要完成数据源的获取方式,获取方式可以是任意方式,比如文件、数据库、zk、consul等等。本例子主要是针对文件获取方式,其它方式可以类推。

数据源实现

数据源实现需要继承PolledConfigurationSource中的poll方法,实现如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class FillConfigurationSource implements PolledConfigurationSource { @Override public PollResult poll(boolean b, Object o) { System.out.println("polling....."); FileInputStream in = null; try { in = new FileInputStream("you file path"); Properties properties = new Properties(); properties.load(in); Set<Object> keys = properties.keySet(); Map<String, Object> map = new HashMap<>(); for (Object k : keys) { map.put((String) k, properties.get(k)); } return PollResult.createFull(map); } catch (IOException e) { } finally { if (in != null) try { in.close(); } catch (IOException e) { e.printStackTrace(); } } return null; } }

定时策略

archaius定时策略有一个默认实现FixedDelayPollingScheduler,此默认实现有两个配置,分别是启动延时时间(archaius.fixedDelayPollingScheduler.initialDelayMills 默认为30秒)和间隔获取配置时间(archaius.fixedDelayPollingScheduler.delayMills默认为60秒),这些配置的值是通过System.getProperty获取,当然也可以通过System.setProperty设置默认的值。默认实现足以满足大部分的需求,如果想定制定时策略可以实现AbstractPollingScheduler接口的schedule方法,官网的例子如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
public class MyScheduler extends AbstractPollingScheduler { // ... @Override protected synchronized void schedule(Runnable runnable) { // schedule the runnable } @Override public void stop() { // stop the scheduler } }

运行

我们来看看运行代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void startPolling() { System.setProperty("archaius.fixedDelayPollingScheduler.initialDelayMills", "1000"); System.setProperty("archaius.fixedDelayPollingScheduler.delayMills", "2000"); PolledConfigurationSource source = new FillConfigurationSource(); AbstractPollingScheduler scheduler = new FixedDelayPollingScheduler(); DynamicConfiguration configuration = new DynamicConfiguration(source, scheduler); ConfigurationManager.install(configuration); new Thread(new Runnable() { @Override public void run() { while (true) { try { Thread.sleep(1000 * 10); DynamicStringProperty myprop = DynamicPropertyFactory.getInstance().getStringProperty("uttp", "default"); System.out.println("-----vaule:" + myprop.getValue()); } catch (Exception e) { } } } }).start(); }

开始值文件中uttp的值为s2,当文件中的uttp值改为3时,得到的值也改变了,结果如下

polling…..
—–vaule:s2
polling…..
polling…..
polling…..
polling…..
polling…..
—–vaule:s3

最后

以上就是开心画笔最近收集整理的关于Netflix archaius动态配置工具使用的全部内容,更多相关Netflix内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部