根据Quartz2.2.1版本封装的工具类,记录与此用于备忘:
package com.yida.framework.base.util.quartz; import java.util.ArrayList; import java.util.List; import org.quartz.CronScheduleBuilder; import org.quartz.CronTrigger; import org.quartz.Job; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.JobKey; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.Trigger.TriggerState; import org.quartz.TriggerBuilder; import org.quartz.TriggerKey; import org.quartz.impl.matchers.GroupMatcher; import org.springframework.scheduling.quartz.SchedulerFactoryBean; import com.yida.framework.base.util.AppUtil; import com.yida.framework.modules.po.Task; import com.yida.framework.modules.po.TaskGroup; import com.yida.framework.modules.po.TaskSchedule; /** * @ClassName: SchedulerUtils * @Description: Quartz任务计划调度工具类 * @author Lanxiaowei(736031305@qq.com) * @date 2015年12月10日 下午4:47:12 * */ public class SchedulerUtils { //Trigger各种状态: //None:Trigger已经完成,且不会在执行,或者找不到该触发器,或者Trigger已经被删除 //NORMAL:正常状态 //PAUSED:暂停状态 //COMPLETE:触发器完成,但是任务可能还正在执行中 //BLOCKED:线程阻塞状态 //ERROR:出现错误 /** * @throws ClassNotFoundException * @Author: Lanxiaowei(736031305@qq.com) * @Title: addTaskSchedule * @Description: 添加任务计划 * @param @param taskSchedule * @param @return * @param @throws SchedulerException * @return int * @throws */ public static int addTaskSchedule(TaskSchedule taskSchedule) throws SchedulerException, ClassNotFoundException { Task task = taskSchedule.getTask(); if(null == task) { //任务计划尚未绑定任务 return -1; } TaskGroup group = task.getGroup(); String groupName = null; if(null != group) { groupName = group.getTaskGroupName(); } else { groupName = BaseTask.DEFAULT_GROUP; } SchedulerFactoryBean schedulerFactory = (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory"); Scheduler scheduler = schedulerFactory.getScheduler(); TriggerKey triggerKey = TriggerKey.triggerKey(taskSchedule.getScheduleName(), groupName); CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey); if (null == trigger) { //这里是任务类的class JobDetail jobDetail = JobBuilder.newJob((Class<? extends Job>) Class.forName(task.getTaskClass())) .withIdentity(taskSchedule.getScheduleName(), groupName).build(); String uniqueKey = taskSchedule.getScheduleName() + "#$#" + task.getTaskName() + "#$#" + groupName; jobDetail.getJobDataMap().put(uniqueKey, taskSchedule); //表达式调度构建器 CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(taskSchedule .getCronExpression()); trigger = TriggerBuilder.newTrigger().withIdentity(taskSchedule.getScheduleName(), groupName) .withSchedule(scheduleBuilder).build(); scheduler.scheduleJob(jobDetail, trigger); } else { CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(taskSchedule .getCronExpression()); trigger = trigger.getTriggerBuilder().withIdentity(triggerKey) .withSchedule(scheduleBuilder).build(); scheduler.rescheduleJob(triggerKey, trigger); } return 1; } /** * @Author: Lanxiaowei(736031305@qq.com) * @Title: pauseJob * @Description: 暂停任务计划 * @param @param taskScheduleName 任务计划名称 * @param @param taskGroupName 任务分组名称 * @param @throws SchedulerException * @return void * @throws */ public static void pauseJob(String taskScheduleName,String taskGroupName) throws SchedulerException { SchedulerFactoryBean schedulerFactory = (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory"); Scheduler scheduler = schedulerFactory.getScheduler(); JobKey jobKey = JobKey.jobKey(taskScheduleName, taskGroupName); scheduler.pauseJob(jobKey); } /** * @Author: Lanxiaowei(736031305@qq.com) * @Title: pauseJob * @Description: 批量暂停任务计划 * @param @param groupMatcher * @param @throws SchedulerException * @return void * @throws */ public static void pauseJob(GroupMatcher<JobKey> groupMatcher) throws SchedulerException { SchedulerFactoryBean schedulerFactory = (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory"); Scheduler scheduler = schedulerFactory.getScheduler(); //GroupMatcher创建示例,groupContains即任务分组名称中包含指定字符的任务计划全部暂停 //GroupMatcher<JobKey> groupMatcher = GroupMatcher.groupContains("xxxx"); scheduler.pauseJobs(groupMatcher); } /** * @Author: Lanxiaowei(736031305@qq.com) * @Title: pauseAllJob * @Description: 暂停所有任务计划 * @param @throws SchedulerException * @return void * @throws */ public static void pauseAllJob() throws SchedulerException { SchedulerFactoryBean schedulerFactory = (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory"); Scheduler scheduler = schedulerFactory.getScheduler(); scheduler.pauseAll(); } /** * @Author: Lanxiaowei(736031305@qq.com) * @Title: resumeJob * @Description: 恢复任务计划 * @param @param taskScheduleName 任务计划名称 * @param @param taskGroupName 任务分组名称 * @param @throws SchedulerException * @return void * @throws */ public static void resumeJob(String taskScheduleName,String taskGroupName) throws SchedulerException { SchedulerFactoryBean schedulerFactory = (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory"); Scheduler scheduler = schedulerFactory.getScheduler(); JobKey jobKey = JobKey.jobKey(taskScheduleName, taskGroupName); scheduler.resumeJob(jobKey); } /** * @Author: Lanxiaowei(736031305@qq.com) * @Title: resumeAllJob * @Description: 恢复所有任务计划 * @param @throws SchedulerException * @return void * @throws */ public static void resumeAllJob() throws SchedulerException { SchedulerFactoryBean schedulerFactory = (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory"); Scheduler scheduler = schedulerFactory.getScheduler(); scheduler.resumeAll(); } /** * @Author: Lanxiaowei(736031305@qq.com) * @Title: deleteJob * @Description: 删除任务计划 * @param @param taskScheduleName * @param @param taskGroupName * @param @throws SchedulerException * @return void * @throws */ public static void deleteJob(String taskScheduleName,String taskGroupName) throws SchedulerException { SchedulerFactoryBean schedulerFactory = (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory"); Scheduler scheduler = schedulerFactory.getScheduler(); JobKey jobKey = JobKey.jobKey(taskScheduleName, taskGroupName); scheduler.deleteJob(jobKey); } /** * @Author: Lanxiaowei(736031305@qq.com) * @Title: deleteJob * @Description: 批量删除任务计划 * @param @param taskScheduleList * @param @throws SchedulerException * @return void * @throws */ public static void deleteJob(List<TaskSchedule> taskScheduleList) throws SchedulerException { if(null == taskScheduleList || taskScheduleList.size() <= 0) { return; } SchedulerFactoryBean schedulerFactory = (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory"); Scheduler scheduler = schedulerFactory.getScheduler(); List<JobKey> jobKeyList = new ArrayList<JobKey>(); for(TaskSchedule taskSchedule : taskScheduleList) { Task task = taskSchedule.getTask(); if(null == task) { continue; } String taskGroupName = null; TaskGroup group = task.getGroup(); if(null != group) { taskGroupName = group.getTaskGroupName(); } else { taskGroupName = BaseTask.DEFAULT_GROUP; } String taskScheduleName = taskSchedule.getScheduleName(); JobKey jobKey = JobKey.jobKey(taskScheduleName, taskGroupName); jobKeyList.add(jobKey); } scheduler.deleteJobs(jobKeyList); } /** * @Author: Lanxiaowei(736031305@qq.com) * @Title: cancleJob * @Description: 取消任务计划 * @param @param taskScheduleName * @param @param taskGroupName * @param @throws SchedulerException * @return void * @throws */ public static void cancleJob(String taskScheduleName,String taskGroupName) throws SchedulerException { SchedulerFactoryBean schedulerFactory = (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory"); Scheduler scheduler = schedulerFactory.getScheduler(); TriggerKey triggerKey = TriggerKey.triggerKey(taskScheduleName,taskGroupName); scheduler.unscheduleJob(triggerKey); } /** * @Author: Lanxiaowei(736031305@qq.com) * @Title: canleJob * @Description: 批量取消任务计划 * @param @param taskScheduleList * @param @throws SchedulerException * @return void * @throws */ public static void canleJob(List<TaskSchedule> taskScheduleList) throws SchedulerException { if(null == taskScheduleList || taskScheduleList.size() <= 0) { return; } SchedulerFactoryBean schedulerFactory = (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory"); Scheduler scheduler = schedulerFactory.getScheduler(); List<TriggerKey> triggerKeyList = new ArrayList<TriggerKey>(); for(TaskSchedule taskSchedule : taskScheduleList) { Task task = taskSchedule.getTask(); if(null == task) { continue; } String taskGroupName = null; TaskGroup group = task.getGroup(); if(null != group) { taskGroupName = group.getTaskGroupName(); } else { taskGroupName = BaseTask.DEFAULT_GROUP; } String taskScheduleName = taskSchedule.getScheduleName(); TriggerKey triggerKey = TriggerKey.triggerKey(taskScheduleName,taskGroupName); triggerKeyList.add(triggerKey); } scheduler.unscheduleJobs(triggerKeyList); } /** * @Author: Lanxiaowei(736031305@qq.com) * @Title: checkJobExist * @Description: 检测任务计划是否存在 * @param @param taskScheduleName * @param @param taskGroupName * @param @return * @param @throws SchedulerException * @return boolean * @throws */ public static boolean checkJobExist(String taskScheduleName,String taskGroupName) throws SchedulerException { SchedulerFactoryBean schedulerFactory = (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory"); Scheduler scheduler = schedulerFactory.getScheduler(); JobKey jobKey = JobKey.jobKey(taskScheduleName, taskGroupName); return scheduler.checkExists(jobKey); } /** * @throws SchedulerException * @Author: Lanxiaowei(736031305@qq.com) * @Title: returnJobState * @Description: 返回任务计划的运行状态 * BLOCKED:5 * ERROR:4 * COMPLETE:3 * PAUSED:2 * NORMAL:1 * NONE:0 * @param @param taskScheduleName * @param @param taskGroupName * @param @return * @return int * @throws */ public static int returnJobState(String taskScheduleName,String taskGroupName) throws SchedulerException { SchedulerFactoryBean schedulerFactory = (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory"); Scheduler scheduler = schedulerFactory.getScheduler(); TriggerKey triggerKey = TriggerKey.triggerKey(taskScheduleName,taskGroupName); return scheduler.getTriggerState(triggerKey).ordinal(); } }
相关推荐
quartz调度系统工具.zip
定时调度工具类,quartz 2.1.7类包,是定时大哥大哥!!!!!
一个纯 Java 实现的作业调度工具,相当于数据库中的 Job、Windows 的计划任务、Unix/Linux 下的 Cron,但 Quartz 可以把排程控制的更精细。版本1.5.2,内附中文帮助文档
封装通用的Spring3+Struts2+MyBatis3的CRUD+条件分页查询,Spring+Quartz调度,FunctionCharts图像化工具 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
生成定时任务的表达式,根据条件框选择,可以生成表达式示例,以及列举触发时间,不需要自己再去写quartz表达式了
quartz.net .net调度
内容提要:Quartz 还为我们提供了几个开箱即用的工具插件:JobInitializationPlugin,JobInitializationPluginMulitple,LogginJobHistoryPlugin,LoggingTriggerHistoryPlugin,ShutdownHookPlugin。 第九章. 使用 ...
13.11.2. 对模型的支持:ModelMap (ModelAndView) 13.11.3. 对视图的支持: RequestToViewNameTranslator 13.12. 其它资源 14. 集成视图技术 14.1. 简介 14.2. JSP和JSTL 14.2.1. 视图解析器 14.2.2. 'Plain-...
本文由浅入深介绍四种任务调度的Java实现:ScheduledExecutor开源工具包Quartz开源工具包JCronTab此外,为结合实现复杂的任务调度,本文还将介绍Calendar的一些使用方法。Timer相信大家都已经非常熟悉java.util....
2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. IoC(控制反转)容器 3.1. 简介 3.2. 基本原理 - 容器和bean 3.2.1...
2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. IoC(控制反转)容器 3.1. 简介 3.2. 基本原理 - 容器和bean 3.2.1....
13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. radiobutton标签 13.9.6. password标签 13.9.7. select标签 13.9.8. option标签 13.9.9. options标签 13.9.10. textarea标签 13.9.11. hidden标签...
13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. radiobutton标签 13.9.6. password标签 13.9.7. select标签 13.9.8. option标签 13.9.9. options标签 13.9.10. textarea标签 13.9.11. ...
任务调度应用场景 ...任务调度工具 linux的crontab, 支持按照分钟/小时/天/月/周粒度,执行任务 java的Quartz windows的任务计划 本文介绍的是python中的任务调度库,APScheduler(advance python
自家:hsweb-commons :通用工具类hsweb-easy-orm :为动态表单设计的orm框架hsweb-expands-compress :文件压缩,解压操作hsweb-expands-office :office文档操作( excel读写,模板导出,word模板导出)hsweb-...
-quartz基本上任何公司都会用到调度这个功能, 比如我们公司需要定期执行调度生成报表, 或者比如博客什么的定时更新之类的,都可以靠Quartz来完成。正如官网所说,小到独立应用大到大型电子商务网站, Quartz都能...
该内容为自己写的一个程序,使用quartz调度框架可以定时读取数据库(程序里连的是oracle)发送邮件,本程序用到log4j并对log4j进行了封装,和一个不错的资源文件读取类,一个UtilLj工具类,虽然里面有些方法本程序没有...
- 系统任务调度:Quartz ## 前后分离 - 前端框架:NodeJS + Vue + Axios - 前端模板:ElementUI ## 项目截图 ### YMall 商城前台 - 首页 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/首页.png) ![]...
quartz定时调度表达式生成
12. 提供大量工具类,可以直接使用 13. Maven项目构建,您可以直接做架构,可以提升自己的学习能力,使您成为真正的架构师。 版本支持: 支持版本: jdk 1.6、1.7、1.8 Web容器: Tomcat 6、7、 8 数据库: ...