定时任务实战

记录一次简单的定时任务:

注意的点:

思路:实现IQuartzJobService,重写execute()方法;

步骤:1、判断ip是否与配置的ip一致;

           2、打印日志

           3、调用业务接口

以下是源码:

import cn.sh.ideal.elereport.service.IElereportService;
import cn.sh.ideal.framework.quartz.support.IQuartzJobService;
import cn.sh.ideal.framework.quartz.support.QuartzCfg;
import cn.sh.ideal.framework.util.Empty;
import cn.sh.ideal.kpi.service.IKpiService;
import cn.sh.ideal.system.entity.SystemConfig;
import cn.sh.ideal.system.service.ISystemConfigService;
import cn.sh.ideal.task.schdule.StatusChangeType;
import cn.sh.ideal.web.util.WebIpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.Resource;
import java.net.SocketException;
import java.net.UnknownHostException;


@QuartzCfg(cron = "30 1 0 25 * ?", desc = "电子月报每月25号定时发送")
public class OpenEleReport implements IQuartzJobService {
    private static final Logger LOGGER = LoggerFactory.getLogger(StatusChangeType.class);
    @Resource
    private ISystemConfigService systemConfigService;

    @Resource
    private WebIpUtil webIpUtil;

    @Resource
    private IElereportService elereportService;

    @Resource
    private IKpiService kpiService;

    @Override
    public void execute() {
        SystemConfig systemConfig = systemConfigService.findByKey("AUTHORITY_TASK_EXECUTE_IP");
        try {
            if (!Empty.isEmpty(systemConfig.getCfgValue()) && systemConfig.getCfgValue().equals(webIpUtil.configCheckLocal())) {
                LOGGER.info("Start sending electronic monthly reports.");
                //电子月报-重点工作定时发送
                elereportService.haveInterfaceAndMonth();
                //电子月报-战略KPI定时发送
                kpiService.haveInterfaceAndMonth();
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
QuartzJobActuator接口代码:
package cn.sh.ideal.framework.quartz.enhanced;

import cn.sh.ideal.framework.quartz.basic.QuartzConstants;
import cn.sh.ideal.framework.quartz.basic.QuartzJob;
import cn.sh.ideal.framework.quartz.support.IQuartzJobService;
import org.quartz.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * <p>定时任务执行器</p>
 */
@PersistJobDataAfterExecution
@DisallowConcurrentExecution
public class QuartzJobActuator implements Job, QuartzConstants {

    private Logger LOGGER = LoggerFactory.getLogger(QuartzJobActuator.class);

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {

        QuartzJob<IQuartzJobService> scheduleJob = (QuartzJob<IQuartzJobService>) context
            .getMergedJobDataMap().get(SCHEDULE_JOB_NAME);
        LOGGER.info("定时任务:[{}],[{}]", scheduleJob.getCronExpression(), scheduleJob.getDesc());
        scheduleJob.getJob().execute();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值