如何动态加载配置文件

RT~~ 小弟欲实现一功能:
运行在多线程情况下:有个任务队列,从任务队列接收任务,按照配置文件处理,然后保存。
一般都是在程序启动的时候,预先读取配置文件封装好。这样就有个弊端,每次修改配置文件,需要重新启动程序去加载新的配置文件。那么请问 如何能在不重新启动程序的前提下,动态的去加载配置文件?

我在生产环境用的是quartz的定时器,每隔一个小时去查询一次数据库,你可以考虑这么实现。

可以通过一个工具类去读取配置文件,这样每次读取的配置信息就是最新的了,而且不用重启服务。

可以写一个工具类实时监控配置文件是否有改动,如有改动就重新加载读取最新的数据,比如:使用quartz来定时扫描

方法一。。。写个定时器。。固定时间加载一次配置文件,。
方法二。。配置到数据库中

每次需要拿取配置文件的值的时候,都是去读取的,不就好了

每次读取值,先检查下配置文件有没有更新,对比下最新修改时间,如果更新重新加载配置文件

楼主如果要求性能很高的话,不能接受每次定时运行都读取配置文件的话,可以用缓存,在启动程序时候把配置文件内容放入缓存,对于修改配置文件,提供一个web页面进行修改,每次修改都刷新缓存内容。这样就达到了即能满足性能,也能保证每次修改可以读取到最新的配置内容。

我以前有一种做法,就是在Linux/Unix上,每次修改了配置文件,都发出一个特定的命令告诉服务器程序,配置文件已更新,需要立刻更新内存里的配置信息。

一般来讲,修改配置文件,都不会在业务高峰中去修改,反而都是在没有什么业务的时候去做,有很多时候,都是要停止业务的。

因为配置的修改意味着系统的变更,而一般的变更都不仅仅是修改配置文件这么简单的事情。