//初始化
public class ServiceIpItemInit implements IInit {
private static final ILog logger = LogFactory.getLogger(ServiceIpItemInit.class);
@Override
public void init() {
this.addTimerToUpdateDsAndKylinTable();
logger.info("调用定时器初始化成功");
}
/**
* 添加定时聚合服务调用次数 上报计费
*/
private void addTimerToUpdateDsAndKylinTable() {
Timer timer = new Timer();
long day = 1000l * 60 * 60 * 24;
// 每天2点执行一次
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 2); // 控制时
calendar.set(Calendar.MINUTE, 0); // 控制分
calendar.set(Calendar.SECOND, 0); // 控制秒
Date time8 = calendar.getTime();// 当天凌晨两点
timer.scheduleAtFixedRate(new ServiceIpItemTimeTask(), time8, day);//(就比如现在的例子 每一天的两点)如果初始化的时间在 任务跑的时间之后 即今天凌晨两点之后 那么这个方法会自动补足当天两点的这次任务 同理如果传的时间参数是当前的3天前 那么今天初始化之后 则会补足三次任务
//timer.scheduleAtFixedRate(new ServiceIpItemTimeTask(), 0, 1000 * 30);
//
// // 每天17点执行一次
// Calendar calendar17 = Calendar.getInstance();
// calendar17.set(Calendar.HOUR_OF_DAY, 17); // 控制时
// calendar17.set(Calendar.MINUTE, 0); // 控制分
// calendar17.set(Calendar.SECOND, 0); // 控制秒
// Date time17 = calendar17.getTime();
// timer.scheduleAtFixedRate(new ServiceIpItemTimeTask(), time17, day);
}
}
//定时任务类
public class ServiceIpItemTimeTask extends TimerTask {
private static final LoggerDecorator logger = BaseLoggerDecorator.getLogger(ServiceIpItemTimeTask.class);
@Override
public void run() {
try {
Properties p = PropertyUtils.getProperties("common.properties");
String jobstart = p.get("jobstart") + "";
if ("true".equals(jobstart)) {// 开关
logger.info("开始调用定时上报计费任务开始");
ServiceIpItemTask.DsfItemSave(); //具体要执行的任务
logger.info("开始调用定时上报计费任务结束");
} else {
logger.info("开始调用定时上报计费任务开关已关闭");
}
} catch (Exception e) {
logger.error("调用定时上报计费任务出错" + e);
}
}
}