Spring Task的使用
注解配置
package com.cmb.mobilelog.fulllink.timer;
import com.cmb.mobilelog.fulllink.configuration.SysConfig;
import com.cmb.mobilelog.fulllink.elasticSearch.EsSearchDao;
import com.cmb.mobilelog.fulllink.elasticSearch.ThreeSourceDao;
import com.cmb.mobilelog.fulllink.hbase.EsToHBaseDao;
import com.cmb.mobilelog.fulllink.model.EsToHbaseModel;
import com.cmb.mobilelog.fulllink.utils.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.concurrent.CountDownLatch;
@Service("SynTaskTimer")
@Configurable
@EnableScheduling
public class SynTaskTimer {
private Logger LOG = LoggerFactory.getLogger(EsSearchDao.class);
@Autowired(required = false)
ThreeSourceDao threeSourceDao;
@Autowired
private EsToHBaseDao esToHBaseDao;
@Scheduled(fixedRate = 10 * 1000)
public void doJob() {
try {
System.out.println(DateUtil.getCurrentTimeSec() + ":开始执行定时任务!!");
long endTime = System.currentTimeMillis();
long beginTime = DateUtil.getStampAfterMin(endTime, -SysConfig.timingInterval);
List<EsToHbaseModel> modelList = threeSourceDao.getThreeSourceDataByServer(beginTime, endTime, "ServerName");
for (EsToHbaseModel model : modelList) {
if (model.nonEmpty()) {
Map<String, Map<String, Long>> modelMaps = model.getModelMap();
for (Map.Entry<String, Map<String, Long>> entry : modelMaps.entrySet()) {
String qualifier = ConstantConfig.MODEL_ALL.equals(entry.getKey()) ? model.getSource() : entry.getKey();
try {
esToHBaseDao.setRealDataMap(ConstantConfig.DATABASE_REAL, RowKeyConfig.getKeyPre(model.getSource(), model.getBusiness(), qualifier), qualifier, entry.getValue());
esToHBaseDao.setHistoryDataMap(ConstantConfig.DATABASE_HISTORY, RowKeyConfig.getKeyPre(model.getSource(), model.getBusiness(), qualifier), qualifier, entry.getValue());
} catch