package com.hqyg.disjob.monitor.diamond;
/*package com.hqyg.disjob.monitor.diamond;
import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.commons.lang3.StringUtils;
import com.hqyg.disjob.monitor.db.util.DBCommonUtil;
import com.hqyg.disjob.monitor.db.util.NamedThreadFactory;
import com.taobao.diamond.manager.impl.DefaultDiamondManager;
import com.taobao.diamond.manager.impl.PropertiesListener;
*//**
* <pre>
*
* File: DiamondServiceUtils.java
*
* Copyright (c) 2016, globalegrow.com All Rights Reserved.
*
* Description:
* 实现diamond的监听初始化、更新的属性合并写文件
*
* Revision History
*
* Date: 2016年8月16日
* Author: Disjob
*
* </pre>
*//*
public class DiamondServiceUtils {
存储监听的diamond组/dataId对应的属性信息
private static Map<String,Properties> propers;
private static ExecutorService pool;//线程池执行
private static String proPath;//路径
private static String suffix = ".properties";//配置文件后缀
private static String comma = ",";//dataId列表的分隔符
static{
propers = new ConcurrentHashMap<>();
pool = Executors.newSingleThreadExecutor(new NamedThreadFactory("Diamond-listener"));
}
*//**初始化diamond的监听
* @param filePath 写入更新的配置文件路径
* @param groups 监听组名称
* @param dataIds 监听的diamond中组对应的dataId的列表,以“,”逗号进行分割
*//*
public static void init(String filePath,String groups,String dataIds){
if(StringUtils.isEmpty(filePath) || StringUtils.isEmpty(groups) || StringUtils.isEmpty(dataIds)){
DBCommonUtil.logError(PropertyRWUtils.class, new Exception("diamond init error: filePath or groups or dataIds is null!"));
return;
}
proPath = filePath+"/";
for(String dataId : dataIds.split(comma)){
new DefaultDiamondManager(groups, dataId, new CustomPropertiesListener(dataId));
//manager.getPropertiesConfigureInfomation(10);//强制读取
}
}
*//**
* <pre>
*
* File: DiamondServiceUtils.java
*
* Copyright (c) 2016, globalegrow.com All Rights Reserved.
*
* Description:
* 自定义监听器类:
* 1,存储监听的dataID
* 2,对更新后的配置属性和当前保存的属性进行合并
* 3,启动线程进行配置文件更新操作
*
* Revision History
*
* Date: 2016年8月16日
* Author: Disjob
*
* </pre>
*//*
static class CustomPropertiesListener extends PropertiesListener implements Runnable{
private String DataId;
public CustomPropertiesListener(String dataId){
DataId = dataId;
}
@Override
public void innerReceive(Properties arg0) {
DBCommonUtil.logInfo("[diamond property updating ] params[ "+proPath+DataId+suffix+", Update coming soon! ]");
if(!propers.containsKey(DataId)){//没有存在则添加
propers.put(DataId, new Properties());
}
propers.get(DataId).putAll(arg0);//属性合并
pool.execute(this);
}
@Override
public void run() {
try{
analyse(DataId);
DBCommonUtil.logInfo("[diamond property updating ] params[ "+proPath+DataId+suffix+", Update complete! ]");
}catch(Throwable e){}
}
}
共享分析属性的方法,写入到相应的配置文件中
static void analyse(String dataId){
Properties pro = propers.get(dataId);
for(Object key:pro.keySet()){
//System.out.println(key+"="+pro.getProperty((String) key));
PropertyRWUtils.writeOrUpdateKey(proPath+dataId+suffix, (String)key, pro.getProperty((String) key));
}
}
//创建文件,如果目录不存在则创建,文件不存在则创建,异常则失败
static boolean createFile(String filePath){
if(filePath == null)
return false;
File file = new File(filePath);
if(!file.getParentFile().exists())
file.getParentFile().mkdirs();
if(file.exists())
return true;
try {
return file.createNewFile();
} catch (IOException e) {
DBCommonUtil.logError(PropertyRWUtils.class, e);
return false;
}
}
public static void main(String[] args) {
DiamondServiceUtils.init("d:/test/", "ejob", "jdbc,monitor-conf,quartz-conf,zoopkeeper-conf");
}
}*/