spring boot快速集成Quartz定时器
2018-08-20 10:43
197 查看
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/
相关文章推荐
- SpringBoot集成Quartz实现定时器
- spring-boot集成Quartz
- spring-boot-2.0.3之quartz集成,不是你想的那样哦!
- spring-boot-2.0.3之quartz集成,数据源问题,源码探究
- spring boot 集成 Quartz
- springBoot集成quartz集群
- Spring集成Quartz定时器实现定时作业任务
- spring集成quartz定时器使用
- Java定时器quartz和spring集成
- 推荐一款Java基于最新Spring 4.2.5 集成Quartz 2.2.2 任务调度定时器界面配置版
- Spring boot 集成Quartz,实现Job注入bean, 达到多任务调度控制
- 携程Apollo(阿波罗)配置中心在Spring Boot项目快速集成
- Spring Boot Quartz集成(二)
- SpringBoot学习-简单QuartZ定时器设置
- Spring Boot Quartz集成(一)
- Spring Boot集成Quartz注入Spring管理的类
- Spring Boot集成Quartz注入Spring管理的类的方法
- 简单快速的用SpringBoot集成JPA
- Spring boot定时任务及集成Quartz
- Spring Boot集成持久化Quartz定时任务管理和界面展示