![JAR search and dependency download from the Maven repository](/logo.png)
com.github.ltsopensource.core.cluster.Config Maven / Gradle / Ivy
package com.github.ltsopensource.core.cluster;
import com.github.ltsopensource.core.constant.Constants;
import com.github.ltsopensource.core.json.JSON;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* @author Robert HG ([email protected]) on 8/20/14.
* 任务节点配置
*/
public class Config implements Serializable {
private static final long serialVersionUID = -8283382582968938472L;
// 节点是否可用
private boolean available = true;
// 应用节点组
private String nodeGroup;
// 唯一标识
private String identity;
// 工作线程, 目前只对 TaskTracker 有效
private int workThreads;
// 节点类型
private NodeType nodeType;
// 注册中心 地址
private String registryAddress;
// 远程连接超时时间
private int invokeTimeoutMillis;
// 监听端口
private int listenPort;
private String ip;
// 任务信息存储路径(譬如TaskTracker反馈任务信息给JobTracker, JobTracker down掉了, 那么存储下来等待JobTracker可用时再发送)
private String dataPath;
// 集群名字
private String clusterName;
private volatile transient Map numbers;
private final Map parameters = new HashMap();
// 内部使用
private final Map internalData = new ConcurrentHashMap();
public String getClusterName() {
return clusterName;
}
public void setClusterName(String clusterName) {
this.clusterName = clusterName;
}
public String getNodeGroup() {
return nodeGroup;
}
public void setNodeGroup(String nodeGroup) {
this.nodeGroup = nodeGroup;
}
public String getIdentity() {
return identity;
}
public void setIdentity(String identity) {
this.identity = identity;
}
public int getWorkThreads() {
return workThreads;
}
public void setWorkThreads(int workThreads) {
this.workThreads = workThreads;
}
public NodeType getNodeType() {
return nodeType;
}
public void setNodeType(NodeType nodeType) {
this.nodeType = nodeType;
}
public String getRegistryAddress() {
return registryAddress;
}
public void setRegistryAddress(String registryAddress) {
this.registryAddress = registryAddress;
}
public int getInvokeTimeoutMillis() {
return invokeTimeoutMillis;
}
public void setInvokeTimeoutMillis(int invokeTimeoutMillis) {
this.invokeTimeoutMillis = invokeTimeoutMillis;
}
public int getListenPort() {
return listenPort;
}
public void setListenPort(int listenPort) {
this.listenPort = listenPort;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getDataPath() {
return dataPath;
}
public void setDataPath(String dataPath) {
this.dataPath = dataPath;
}
public boolean isAvailable() {
return available;
}
public void setAvailable(boolean available) {
this.available = available;
}
public void setParameter(String key, String value) {
parameters.put(key, value);
}
public String getParameter(String key) {
return parameters.get(key);
}
public String getParameter(String key, String defaultValue) {
String value = parameters.get(key);
if (value == null) {
return defaultValue;
}
return value;
}
public Map getParameters() {
return parameters;
}
private Map getNumbers() {
if (numbers == null) { // 允许并发重复创建
numbers = new ConcurrentHashMap();
}
return numbers;
}
public boolean getParameter(String key, boolean defaultValue) {
String value = getParameter(key);
if (value == null || value.length() == 0) {
return defaultValue;
}
return Boolean.parseBoolean(value);
}
public int getParameter(String key, int defaultValue) {
Number n = getNumbers().get(key);
if (n != null) {
return n.intValue();
}
String value = getParameter(key);
if (value == null || value.length() == 0) {
return defaultValue;
}
int i = Integer.parseInt(value);
getNumbers().put(key, i);
return i;
}
public String[] getParameter(String key, String[] defaultValue) {
String value = getParameter(key);
if (value == null || value.length() == 0) {
return defaultValue;
}
return Constants.COMMA_SPLIT_PATTERN.split(value);
}
public double getParameter(String key, double defaultValue) {
Number n = getNumbers().get(key);
if (n != null) {
return n.doubleValue();
}
String value = getParameter(key);
if (value == null || value.length() == 0) {
return defaultValue;
}
double d = Double.parseDouble(value);
getNumbers().put(key, d);
return d;
}
public float getParameter(String key, float defaultValue) {
Number n = getNumbers().get(key);
if (n != null) {
return n.floatValue();
}
String value = getParameter(key);
if (value == null || value.length() == 0) {
return defaultValue;
}
float f = Float.parseFloat(value);
getNumbers().put(key, f);
return f;
}
public long getParameter(String key, long defaultValue) {
Number n = getNumbers().get(key);
if (n != null) {
return n.longValue();
}
String value = getParameter(key);
if (value == null || value.length() == 0) {
return defaultValue;
}
long l = Long.parseLong(value);
getNumbers().put(key, l);
return l;
}
public short getParameter(String key, short defaultValue) {
Number n = getNumbers().get(key);
if (n != null) {
return n.shortValue();
}
String value = getParameter(key);
if (value == null || value.length() == 0) {
return defaultValue;
}
short s = Short.parseShort(value);
getNumbers().put(key, s);
return s;
}
public byte getParameter(String key, byte defaultValue) {
Number n = getNumbers().get(key);
if (n != null) {
return n.byteValue();
}
String value = getParameter(key);
if (value == null || value.length() == 0) {
return defaultValue;
}
byte b = Byte.parseByte(value);
getNumbers().put(key, b);
return b;
}
@SuppressWarnings("unchecked")
public T getInternalData(String key, T defaultValue) {
Object obj = internalData.get(key);
if (obj == null) {
return defaultValue;
}
return (T) obj;
}
public T getInternalData(String key) {
return getInternalData(key, null);
}
public void setInternalData(String key, Object value) {
internalData.put(key, value);
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy