consul宕机配置丢失

编写整个框架的目的是为了处理应用程序的配置。 我更喜欢一种简单的方法。

如果通过配置来表示“ 部署之间可能有所不同的所有内容 ”,那么我们应该尝试使配置保持简单。 在Java中,最简单的选项是不起眼的属性文件。 属性文件的缺点是,当您希望应用程序接收更改时必须重新启动它。 还是你

这是我在多个项目中使用的一种简单方法:

public class MyAppConfig extends AppConfiguration {private static MyAppConfig instance = new MyAppConfig();public static MyAppConfig instance() {return instance;}private MyAppConfig() {this("myapp.properties");}public String getServiceUrl() {return getRequiredProperty("service.url");}public boolean getShouldStartSlow() {return getFlag("start-slow", false);}public int getHttpPort(int defaultPort) {return getIntProperty("myapp.http.port", defaultPort);}}

AppConfiguration类如下所示:

public abstract class AppConfiguration {private static Logger log = LoggerFactory.getLogger(AppConfiguration.class);private long nextCheckTime = 0;private long lastLoadTime = 0;private Properties properties = new Properties();private final File configFile;protected AppConfiguration(String filename) {this.configFile = new File(filename);}public String getProperty(String propertyName, String defaultValue) {String result = getProperty(propertyName);if (result == null) {log.trace("Missing property {} in {}", propertyName, properties.keySet());return defaultValue;}return result;}public String getRequiredProperty(String propertyName) {String result = getProperty(propertyName);if (result == null) {throw new RuntimeException("Missing property " + propertyName);}return result;}private String getProperty(String propertyName) {if (System.getProperty(propertyName) != null) {log.trace("Reading {} from system properties", propertyName);return System.getProperty(propertyName);}if (System.getenv(propertyName.replace('.', '_')) != null) {log.trace("Reading {} from environment", propertyName);return System.getenv(propertyName.replace('.', '_'));}ensureConfigurationIsFresh();return properties.getProperty(propertyName);}private synchronized void ensureConfigurationIsFresh() {if (System.currentTimeMillis() < nextCheckTime) return;nextCheckTime = System.currentTimeMillis() + 10000;log.trace("Rechecking {}", configFile);if (!configFile.exists()) {log.error("Missing configuration file {}", configFile);}if (lastLoadTime >= configFile.lastModified()) return;lastLoadTime = configFile.lastModified();log.debug("Reloading {}", configFile);try (FileInputStream inputStream = new FileInputStream(configFile)) {properties.clear();properties.load(inputStream);} catch (IOException e) {throw new RuntimeException("Failed to load " + configFile, e);}}
}

这样可以高效地读取配置文件,并根据需要更新设置。 它支持默认的环境变量和系统属性。 而且它甚至可以很好地记录正在发生的事情。

  • 有关完整的源代码和自动更新的不可思议的数据源,请参见以下要点:https://gist.github.com/jhannes/b8b143e0e5b287d73038

请享用!

翻译自: https://www.javacodegeeks.com/2014/10/dead-simple-configuration.html

consul宕机配置丢失

consul宕机配置丢失_简单的配置死机相关推荐

  1. OPPO N5117刷机包下载_解决密码忘记 死机中毒等问题

    固件包下载地址http://url88.cn/u/GGjSK?keyword=N5117 品质:官方客服专用固件,经过真机操作测试,必须OK. 纯净:100%人工检测,绝对是最纯净ROM,适合长期使用 ...

  2. 安卓手机开不了机_手机开不了机的原因 _手机开不了机如何解决

    ​ 1.开机线不正常引起的不开机 手机开不了机的原因 _手机开不了机如何解决,正常情况下,按下手机开机键时,开机键的触发端电压应有明显变化,若无变化,一般是开机键接触不良或者是开机线断线.元件虚焊.损 ...

  3. 笔记本计算机死机后如何启动,电脑戴尔死机如何重新启动的解决方法

    我们在使用电脑的时候经常会出现电脑卡住死机无法操作的问题,如果持续等待也不会有结果,也会浪费时间,拔电源是不建议大家去做的,下面就教大家如何去操作. 方法一: 1.我们使用组合键"alt+c ...

  4. 计算机考试是电脑卡住了怎么办,CPA机考时,电脑黑屏、死机了怎么办-之了课堂...

    距离2020年注册会计师考试还有10天左右的时间,大家都准备的怎么样呢?众所周知,注册会计师考试是机考,就是电脑作答,那么电脑作答最怕的就是突然死机或者黑屏,近期就有考生来咨询之了君:CPA机考时,电 ...

  5. 计算机死机黑屏怎么办,电脑显示屏突然死机黑屏怎么办

    电脑显示屏突然死机黑屏怎么办 电脑显示屏突然死机黑屏怎么办?会是什么原因呢?应该怎么办呢?下面就一起来了解看看吧! 电脑突然莫名的死机,很有可能是以下的几点原因导致的: CPU风扇不工作或散热不好,检 ...

  6. 配置方法_经济权配置账户与六类经济项——经济权配置方法认识

    (本文由上海复斯管理咨询公司研究并发布.) 经济权配置账户,是表达配置体自身经济权配置方案并有效呈现其经济管理模式特征的框架性工具.可拆分为收益权配置账户和经济管理权配置账户,并分别表达收益权配置和经 ...

  7. python通过跳板机连接服务器_使用pycharm、跳板机连接内网服务器

    使用pycharm.跳板机连接内网服务器 接手实验室服务器后,大部分同学在GPU集群上跑程序都是直接在ssh界面上跑,这里想着通过pycharm通过跳板机来连接服务器. 总体就是实验室服务器仅限内网访 ...

  8. 安装mysql黑屏电脑卡死_电脑卡屏死机是怎么回事?

    许多人在使用电脑的过程中会碰到电脑卡屏死机的问题,特别是在玩游戏的关键时候,这种情况真能让人抓狂.对于电脑小白们来说,一般都是选择强制关机来结束电脑卡死不动的状态.那么,电脑卡屏是怎么回事呢?都有哪些 ...

  9. 问题二十三:C++中debug简单的运行死机问题

    其实,"模拟不同材料颜色"章节中,刚添加完相关code之后,运行出现过死机. 将采样次数尽可能降低,简化过程,方便分析问题. 在main()函数添几条log,为了判断死在main( ...

最新文章

  1. jQuery.append()、jQuery.html()存在的XSS漏洞
  2. iOS多线程:『NSOperation、NSOperationQueue』详尽总结
  3. 算法笔记-图--bfs
  4. Python基本语法_基本数据类型_序列类型详解
  5. 《HeadFirst设计模式》笔记
  6. html div阴影向上,css3阴影向上缓动样式
  7. Nginx 安装配置【必须把文件到放到机器上】
  8. C语言运算符及其优先级汇总表口诀
  9. matlab 音频处理、Python音频处理
  10. RocketMQ 集群部署模式 理论介绍
  11. 同是共享内存,shm_open与shmget有什么差异?
  12. VS C# string 字符查找 寻找指定字符
  13. 弗洛伊德的乌龟与兔子
  14. 2019 中国开源年会即将开启
  15. VUE实战--网易云音乐
  16. 快看世界公布“神笔马良”工程 国漫借AI技术走向世界
  17. 线程池在美团的最佳实践
  18. java多线程概念、实现、状态和生命周期、同步、通信
  19. 计算机员工信息登录表的论文,企业员工信息管理系统(论文+程序)
  20. 深入浅出WMS之出库流程解析

热门文章

  1. nssl1320,jzoj(初中)2108-买装备【dfs,水题】
  2. P1375-小猫【卡特兰数】
  3. P4231-三步必杀【差分】
  4. jzoj5223-B【矩阵乘法】
  5. P2158,jzoj1709-仪仗队【欧拉函数,数论】
  6. codeforces1453 D. Checkpoints
  7. 牛客练习赛 58——树链剖分
  8. 【单调队列】【DP】城市交通(jzoj 1749)
  9. 分布式之redis复习精讲
  10. 在 Java 中初始化 List 的五种方法