
com.baidu.disconf.client.config.DisClientConfig Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of disconf-client Show documentation
Show all versions of disconf-client Show documentation
https://github.com/knightliao/disconf/tree/master/disconf-client
package com.baidu.disconf.client.config;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.baidu.disconf.client.config.inner.DisInnerConfigAnnotation;
import com.baidu.disconf.client.support.DisconfAutowareConfig;
import com.baidu.disconf.core.common.constants.Constants;
/**
* Disconf Client的用户配置文件
*
* @author liaoqiqi
* @version 2014-6-6
*/
public final class DisClientConfig {
protected static final Logger LOGGER = LoggerFactory.getLogger(DisClientConfig.class);
protected static final DisClientConfig INSTANCE = new DisClientConfig();
public static DisClientConfig getInstance() {
return INSTANCE;
}
protected static final String filename = "disconf.properties";
// disconf.properties 的路径 -D 传入
private static final String DISCONF_CONF_FILE_PATH_ARG = "disconf.conf";
private boolean isLoaded = false;
private DisClientConfig() {
}
public synchronized boolean isLoaded() {
return isLoaded;
}
/**
* load config normal
*
* @throws Exception
*/
public synchronized void loadConfig(String filePath) throws Exception {
if (isLoaded) {
return;
}
String filePathInternal = filename;
// 指定的路径
if (filePath != null) {
filePathInternal = filePath;
}
// -d 的路径
// 优先使用 系统参数或命令行导入
String disconfFilePath = System.getProperty(DISCONF_CONF_FILE_PATH_ARG);
if (disconfFilePath != null) {
filePathInternal = disconfFilePath;
}
try {
DisconfAutowareConfig.autowareConfig(INSTANCE, filePathInternal);
} catch (Exception e) {
LOGGER.warn("cannot find " + filePathInternal + ", using sys var or user input.");
}
// 使用system env 导入
DisconfAutowareConfig.autowareConfigWithSystemEnv(INSTANCE);
isLoaded = true;
}
/**
* 配置文件服务器 HOST
*/
public static final String CONF_SERVER_HOST_NAME = "disconf.conf_server_host";
@DisInnerConfigAnnotation(name = DisClientConfig.CONF_SERVER_HOST_NAME)
public String CONF_SERVER_HOST;
private List hostList;
/**
* app
*
* @author
* @since 1.0.0
*/
public static final String APP_NAME = "disconf.app";
@DisInnerConfigAnnotation(name = DisClientConfig.APP_NAME)
public String APP;
/**
* 版本
*
* @author
* @since 1.0.0
*/
public static final String VERSION_NAME = "disconf.version";
@DisInnerConfigAnnotation(name = DisClientConfig.VERSION_NAME, defaultValue = Constants.DEFAULT_VERSION)
public String VERSION = Constants.DEFAULT_VERSION;
/**
* 主或备
*
* @author
* @since 1.0.0
*/
@DisInnerConfigAnnotation(name = "disconf.maintype")
public String MAIN_TYPE;
/**
* 部署环境
*
* @author
* @since 1.0.0
*/
public static final String ENV_NAME = "disconf.env";
@DisInnerConfigAnnotation(name = DisClientConfig.ENV_NAME, defaultValue = Constants.DEFAULT_ENV)
public String ENV = Constants.DEFAULT_ENV;
/**
* 是否从云端下载配置
*
* @author
* @since 1.0.0
*/
private static final String ENABLE_REMOTE_CONF_NAME = "disconf.enable.remote.conf";
@DisInnerConfigAnnotation(name = DisClientConfig.ENABLE_REMOTE_CONF_NAME, defaultValue = "false")
public boolean ENABLE_DISCONF = false;
/**
* 是否开启DEBUG模式: 默认不开启,
* 1)true: 用于线下调试,当ZK断开与client连接后(如果设置断点,这个事件很容易就发生),ZK不会去重新建立连接。
* 2)false: 用于线上,当ZK断开与client连接后,ZK会再次去重新建立连接。
*
* @author
* @since 1.0.0
*/
@DisInnerConfigAnnotation(name = "disconf.debug", defaultValue = "false")
public boolean DEBUG = false;
/**
* 忽略哪些分布式配置
*
* @author
* @since 1.0.0
*/
@DisInnerConfigAnnotation(name = "disconf.ignore", defaultValue = "")
public String IGNORE_DISCONF_LIST = "";
private Set ignoreDisconfKeySet = new HashSet();
/**
* 获取远程配置 重试次数,默认是3次
*
* @author
* @since 1.0.0
*/
@DisInnerConfigAnnotation(name = "disconf.conf_server_url_retry_times", defaultValue = "3")
public int CONF_SERVER_URL_RETRY_TIMES = 3;
/**
* 用户指定的 下载文件夹, 远程文件下载后会放在这里
*
* @author
* @since 1.0.0
*/
@DisInnerConfigAnnotation(name = "disconf.user_define_download_dir", defaultValue = "./disconf/download")
public String userDefineDownloadDir = "./disconf/download";
/**
* 获取远程配置 重试时休眠时间,默认是5秒
*
* @author
* @since 1.0.0
*/
@DisInnerConfigAnnotation(name = "disconf.conf_server_url_retry_sleep_seconds", defaultValue = "2")
public int confServerUrlRetrySleepSeconds = 2;
/**
* 让下载文件夹放在 classpath目录 下
*
* @author
* @since 1.0.0
*/
@DisInnerConfigAnnotation(name = "disconf.enable_local_download_dir_in_class_path", defaultValue = "true")
public boolean enableLocalDownloadDirInClassPath = true;
public List getHostList() {
return hostList;
}
public void setHostList(List hostList) {
this.hostList = hostList;
}
public Set getIgnoreDisconfKeySet() {
return ignoreDisconfKeySet;
}
public void setIgnoreDisconfKeySet(Set ignoreDisconfKeySet) {
this.ignoreDisconfKeySet = ignoreDisconfKeySet;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy