spring boot快速集成Quartz定时器

1、添加Maven依赖

<dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>1.8.6</version>
        </dependency>

2、创建工具类,初始化Scheduler工厂类

public class QuartzManager {
    private static SchedulerFactory gSchedulerFactory = new StdSchedulerFactory();
     private static String JOB_GROUP_NAME = "JOB_GROUP_NAME ";
    private static String TRIGGER_GROUP_NAME = "TRIGGER_GROUP_NAME";
    }

3、封装添加任务方法

 /**
     * @param jobName 任务名
     * @param cls     任务
     * @param time    时间设置,参考quartz说明文档
     * @Description: 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名
     * @Title: QuartzManager.java
     * @Copyright: Copyright (c) 2014
     * @author Comsys-LZP
     * @date 2014-6-26 下午03:47:44
     * @version V2.0
     */
    @SuppressWarnings("unchecked")
    public static void addJob(String jobName, Class cls, String time) {
        try {
            Scheduler sched = gSchedulerFactory.getScheduler();
            JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, cls);// 任务名,任务组,任务执行类
            // 触发器
            CronTrigger trigger = new CronTrigger(jobName, TRIGGER_GROUP_NAME);// 触发器名,触发器组
            trigger.setCronExpression(time);// 触发器时间设定
            sched.scheduleJob(jobDetail, trigger);
            // 启动
            if (!sched.isShutdown()) {
                sched.start();
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }


    /**
     * @param jobName
     * @param cls
     * @param time
     * @param params  传递的参数
     */
    public static void addJobTraParam(String jobName, Class cls, String time, Object params) {
        try {
            Scheduler sched = gSchedulerFactory.getScheduler();
            JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, cls);// 任务名,任务组,任务执行类
            jobDetail.getJobDataMap().put("data", params);
            // 触发器
            CronTrigger trigger = new CronTrigger(jobName, TRIGGER_GROUP_NAME);// 触发器名,触发器组
            trigger.setCronExpression(time);// 触发器时间设定
            sched.scheduleJob(jobDetail, trigger);
            // 启动
            if (!sched.isShutdown()) {
                sched.start();
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

任务组名和触发器组名此处使用默认组名,可自行定义或动态传入参数设置。

4、创建定时任务

/**
 * 定时任务类 实现job接口
 */
public class MyJob implements Job {

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        JobDataMap map =  context.getMergedJobDataMap();//获取任务参数
        Map<String,Object> data = (Map<String, Object>) map.get("data");
        System.out.println("我被触发了嘻嘻");
    }
}

5、controller调用

    String cron = "0 1 0 * * ? *";
    //若有参数
    Map params = new HashMap();
    params.put("p","我是参数");

    QuartzManager.addJob("jobName" , MyJob.class, cron,params);
cron表达式分为两种
1:每天什么时候执行,比如每天下午2点执行,cron为 0 0 14 * * ?
2:每隔多少秒执行,比如每隔30秒执行一次,cron为 0/30 * * * * ?
生成cron可访问在线生成Cron: http://www.pppet.net/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值