Spring中使用SpringTask和Quartz实现多线程定时任务

本文介绍了如何在Spring中利用SpringTask和Quartz创建多线程定时任务。分别讲解了Spring Task的注解及XML配置方式,Quartz的XML配置,以及如何使用TaskExecutor进行多线程任务执行。最后展示了SpringTask与TaskExecutor结合使用的示例。
摘要由CSDN通过智能技术生成

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;

/**
 * Created by 80234861 on 2018/11/9.
 */
@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)
   //  @Scheduled(cron = "0/10 * * * * ?")
    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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值