consul宕机配置丢失_简单的配置死机

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宕机配置丢失

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html post前md5加密,post提交及MD5加密

C# POST提交/// /// post 网址提交////// 提交网站/// 参数/// 编码方式///public static string PostWebRequest(string postUrl, string paramData, Encoding dataEncode){string ret string.Empty;try{byte[] byteArray dataEncode.GetBytes(paramData); //转化HttpWebReq…

一加7充电_一加真无线耳机曝光,65W快速充电器获认证

一加8系列发布后&#xff0c;曾有消息显示&#xff0c;一加旗下还有一款被称为一加Z的手机将于今年7月登陆市场。现在&#xff0c;距离传言中提到的发布时间越来越近&#xff0c;也再次有消息提到了这一时间点。不过&#xff0c;这次爆料中的新品并不是手机产品。来自爆料人士 …

从工作中清除代码–使用JUnit 5,Mockito和AssertJ编写可执行规范

可执行规范是可以用作设计规范的测试。 通过启用公共语言&#xff08;在DDD世界中&#xff0c;这也称为无处不在的语言 &#xff09;&#xff0c;它们使技术和业务团队能够进入同一页面。 它们充当代码的未来维护者的文档。 在本文中&#xff0c;我们将看到一种编写自动测试的…

怎么使用starwind部署iscsi_2019 年总结 - 多环境多版本的部署

自己几乎经历了部署演进的所有阶段&#xff0c;手动部署、自动部署&#xff0c;部署到服务器、部署到容器。我们也在不断演进并追赶行业前沿的技术/理念。保守估计今年可以基本追赶到行业前沿的最低水平。工作中经历了部署语言的多样化&#xff0c;部署目标的演化/进化&#xf…

家用计算机注意哪些参数,电脑小白买内存条要注意哪些?主要看哪些参数?这些知识要掌握...

内存条是电脑的核心硬件之一&#xff0c;它的作用主要是为CPU服务的&#xff0c;电脑运行的时候&#xff0c;CPU从硬盘里调用数据通过总线寻址放在内存里&#xff0c;内存相当于缓冲处理区&#xff0c;处理好信息后再回馈给CPU&#xff0c;然后电脑再根据指令运行。内存没有记忆…

java 单元测试技巧_其他一些单元测试技巧

java 单元测试技巧在我以前的文章中&#xff0c;我展示了有关JavaBeans单元测试的一些技巧。 在此博客文章中&#xff0c;我将针对单元测试一些相当常见的Java代码&#xff08;即实用程序类和Log4J日志记录语句&#xff09;提供另外两个提示。 测试实用程序类 如果您的实用程序…

日照职业技术学院计算机怎么样,日照职业技术学院宿舍条件怎么样 住宿环境好不好...

又到了一年一度的新生入学季&#xff0c;今年考上日照职业技术学院的学子们对你们的新学校有没有期待&#xff1f;下文中有途网小编给大家整理了日照职业技术学院的宿舍环境&#xff0c;供参考&#xff01;日照职业技术学院宿舍环境如何大学宿舍是各位同学们在大学期间会陪伴我…

cam350怎么看顶层_蛋糕胚速学教程大全,适合初学者看哦!

蛋糕胚速学教程大全&#xff0c;适合初学者看哦&#xff01;烘焙蛋糕最难的还是装饰&#xff0c;对手残星人来说&#xff0c;好不容易切好了蛋糕胚&#xff0c;抹面费了老大劲还是凹凸不平&#xff0c;做出来像狗狗啃过似的&#xff5e;快来看这份蛋糕抹面技巧&#xff0c;教你…

Java 14的新功能

2020年3月17日&#xff0c;Oracle发布了名为Java 14的Java新版本&#xff0c;其中包括许多新功能&#xff0c;工具&#xff0c;安全性&#xff0c;调试和更新的文档方面的改进。 但是&#xff0c;Oracle还向您提供Java的较旧版本&#xff0c;因为它具有向后兼容性&#xff0c;因…

计算机学校教学大纲,中等职业学校计算机应用基础教学大纲

附件4&#xff1a;中等职业学校计算机应用基础教学大纲一、课程性质与任务计算机应用基础课程是中等职业学校学生必修的一门公共基础课。本课程的任务是&#xff1a;使学生掌握必备的计算机应用基础知识和基本技能&#xff0c;培养学生应用计算机解决工作与生活中实际问题的能力…

voms下的反射大师_VOMS旧版

VOMS旧版又叫做虚拟大师&#xff0c;有独立运行的系统&#xff0c;安卓可以支持各种版本&#xff0c;自定义分辨率&#xff0c;应有游戏多开&#xff0c;还有虚拟定位的功能&#xff0c;是用户的好帮手&#xff0c;需要的朋友快来下载吧。VOMS旧版介绍VMOS 是一款运行在安卓上的…

java ssh客户端_简单的Java SSH客户端

java ssh客户端可以使用jcabi-ssh在Java中通过几行代码通过SSH执行shell命令&#xff1a; String hello new Shell.Plain(new SSH("ssh.example.com", 22,"yegor", "-----BEGIN RSA PRIVATE KEY-----...") ).exec("echo Hello, world!&qu…

hbase中的row key_hbase中RowKey的设计规则

在关心到hbase中rowkey设计的时候&#xff0c;说明hbase基本的知识已经了解了。就直接上干货(如果不了解的可以参考我上面一片关于hbase的自我总结的文章&#xff0c;我觉得总结的还是很好的)。如果文章中有错误或是不规范的地方&#xff0c;欢迎随时找我哈rowkey长度原则rowke…

计算机一级上机考试试题题库,2016年计算机一级上机考试题库

2016年计算机一级上机考试题库第1题、 ****** 本套题共有5小题 ******(1)新建文档WDA01.DOC&#xff0c;插入文档WTA01.DOC的内容&#xff0c;将文中所有“星星”替换为“行星”&#xff0c;存储为文档WDA01.DOC。(2)新建文档WDA02.DOC&#xff0c;插入文档WDA01.DOC的内容&…

赞扬精心设计:基于属性的测试如何帮助我成为更好的开发人员

开发人员的测试工具箱就是其中之一&#xff0c;很少保持不变。 可以肯定的是&#xff0c;某些测试实践已被证明比其他测试更有价值&#xff0c;但是&#xff0c;我们仍在不断寻找更好&#xff0c;更快和更具表现力的方法来测试我们的代码。 基于属性的测试 是 Java社区中鲜为人…

docker项目部署 php_「Docker部署PHP+Vue项目」- 海风纷飞Blog

创建Docker映射目录—— vue_demo # Demo项目—— php_vue—— docker-compose.yaml—— nginx———— apps # 项目代码———— conf # nginx配置文件—————— nginx.conf———— log # nginx———— vhost # 虚拟机配…

在美国本科 计算机排名2015,(word)2015年美国大学专业排名汇总-以计算机专业排名为例.doc...

(word)2015年美国大学专业排名汇总-以计算机专业排名为例美国大学经常有一些国内没有的专业&#xff0c;而且由于国情不同&#xff0c;很多在国内的热门专业&#xff0c;在国外可能不是那么“吃香”&#xff0c;另外不是名校的专业就是最好的&#xff0c;可能某个普通大学的专业…

stc单片机485发送多出一字节_单片机干货!STC8H案例制作分享(内含高清实物动图)...

本期&#xff0c;Lucy制作了九个案例分享给大家&#xff0c;分别为&#xff1a;流水灯、按键LED、数码管、点阵、定时蜂鸣器、NTC温度计、超声波测距仪、光敏RGB灯、氛围灯(红外)Lucy无偿提供全部案例的原理图和部分案例的代码。有需要的朋友先关注并私信我。需要源码私信我&am…

λ演算的语法和语义_λ和副作用

λ演算的语法和语义总览 Java 8添加了诸如lambda和类型推断之类的功能。 这使语言不再那么冗长和简洁&#xff0c;但是它带来了更多的副作用&#xff0c;因为您不必对自己的工作做得那么明确。 Lambda的返回类型很重要 Java 8推断闭包的类型。 一种方法是查看返回类型&#xf…

计算机系统中存储管理是,《计算机操作系统5、存储管理.doc

《计算机操作系统5、存储管理一、选择题1&#xff0e;存储器管理的主要功能是内存分配、地址映射、内存保护和( )。A&#xff0e;2&#xff0e;把逻辑地址转变为内存的物理地址的过程称作( )A&#xff0e; D&#xff0e;重定位3&#xff0e;物理地址对应的是( )。A&#xff0e;…