您的位置:首页 > 编程语言 > Java开发

使用Spring Quartz做自动任务 启动和关闭

2015-11-13 15:38 661 查看
因开发需要做一个队自动任务的开关,网上的搜索的结果都不是很满意,考虑到spring本身使用的是单例模式,所以在springMVC中开发是最适合的。
/*** 启动、关闭自动通过* @author yangxujia* @throws Exception* @state start为开始,stop为暂停* @date 2015年11月13日上午11:58:17*/@RequestMapping("autoExaminePass")@ResponseBodypublic Map<String, Object> autoExaminePass(HttpServletRequest request,String operate) throws Exception{Map<String ,Object> map = new HashMap<String, Object>();//具体实现Scheduler scheduler = QuartzScheduleMgr.getInstanceScheduler();JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();Trigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchedule(CronScheduleBuilder.cronSchedule("/5 * * * * ?")).startNow().build();//如果任务未启动if(!scheduler.isStarted()){scheduler.start();scheduler.scheduleJob(job, trigger);//设置调度相关的Job}if("start".equals(operate))	{scheduler.resumeJob(job.getKey());}else if("stop".equals(operate)) {scheduler.pauseJob(job.getKey());}map.put("code", Codes.SUCCESS);return map;}
工具栏代码
package com.**.app.quartz;import java.util.Date;import java.util.List;import java.util.Map;import org.quartz.JobDataMap;import org.quartz.JobDetail;import org.quartz.JobKey;import org.quartz.Scheduler;import org.quartz.SchedulerException;import org.quartz.SchedulerFactory;import org.quartz.Trigger;import org.quartz.TriggerKey;import org.quartz.impl.StdSchedulerFactory;import org.quartz.impl.matchers.GroupMatcher;/*** 一个简单的quartz任务管理器* @author longgangbai**/public class QuartzScheduleMgr {private static  Scheduler scheduler=getScheduler();/*** 创建一个调度对象* @return* @throws SchedulerException*/private static SchedulerFactory sf = null;private static synchronized  Scheduler getScheduler() {if(sf==null){sf = new StdSchedulerFactory();}Scheduler scheduler=null;try {scheduler = sf.getScheduler();} catch (SchedulerException e) {e.printStackTrace();}return scheduler;}public static Scheduler getInstanceScheduler(){return scheduler;}/*** 启动一个调度对象* @throws SchedulerException*/public  void start() throws SchedulerException{scheduler.start();}/*** 检查调度是否启动* @return* @throws SchedulerException*/public  boolean isStarted() throws SchedulerException{return scheduler.isStarted();}/*** 关闭调度信息* @throws SchedulerException*/public  void shutdown() throws SchedulerException	{scheduler.shutdown();}/*** 添加调度的job信息* @param jobdetail* @param trigger* @return* @throws SchedulerException*/public  Date scheduleJob(JobDetail jobdetail, Trigger trigger)throws SchedulerException{return scheduler.scheduleJob(jobdetail, trigger);}/*** 添加相关的触发器* @param trigger* @return* @throws SchedulerException*/public  Date scheduleJob(Trigger trigger) throws SchedulerException{return scheduler.scheduleJob(trigger);}/*** 添加多个job任务* @param triggersAndJobs* @param replace* @throws SchedulerException*///	 public  void scheduleJobs(Map<JobDetail, List<Trigger>> triggersAndJobs, boolean replace) throws SchedulerException//     {//        scheduler.scheduleJobs(triggersAndJobs, replace);//    }/*** 停止调度Job任务* @param triggerkey* @return* @throws SchedulerException*/public  boolean unscheduleJob(TriggerKey triggerkey)throws SchedulerException{return scheduler.unscheduleJob(triggerkey);}/*** 停止调度多个触发器相关的job* @param list* @return* @throws SchedulerException*/public  boolean unscheduleJobs(List<TriggerKey> triggerKeylist) throws SchedulerException{return scheduler.unscheduleJobs(triggerKeylist);}/*** 重新恢复触发器相关的job任务* @param triggerkey* @param trigger* @return* @throws SchedulerException*/public  Date rescheduleJob(TriggerKey triggerkey, Trigger trigger)throws SchedulerException{return scheduler.rescheduleJob(triggerkey, trigger);}/*** 添加相关的job任务* @param jobdetail* @param flag* @throws SchedulerException*/public  void addJob(JobDetail jobdetail, boolean flag)throws SchedulerException	{scheduler.addJob(jobdetail, flag);}/*** 删除相关的job任务* @param jobkey* @return* @throws SchedulerException*/public  boolean deleteJob(JobKey jobkey) throws SchedulerException{return scheduler.deleteJob(jobkey);}/*** 删除相关的多个job任务* @param jobKeys* @return* @throws SchedulerException*/public     boolean deleteJobs(List<JobKey> jobKeys)throws SchedulerException{return scheduler.deleteJobs(jobKeys);}/**** @param jobkey* @throws SchedulerException*/public  void triggerJob(JobKey jobkey) throws SchedulerException	{scheduler.triggerJob(jobkey);}/**** @param jobkey* @param jobdatamap* @throws SchedulerException*/public  void triggerJob(JobKey jobkey, JobDataMap jobdatamap)throws SchedulerException	{scheduler.triggerJob(jobkey, jobdatamap);}/*** 停止一个job任务* @param jobkey* @throws SchedulerException*/public  void pauseJob(JobKey jobkey) throws SchedulerException	{scheduler.pauseJob(jobkey);}/*** 停止多个job任务* @param groupmatcher* @throws SchedulerException*/public  void pauseJobs(GroupMatcher<JobKey> groupmatcher)throws SchedulerException	{scheduler.pauseJobs(groupmatcher);}/*** 停止使用相关的触发器* @param triggerkey* @throws SchedulerException*/public  void pauseTrigger(TriggerKey triggerkey)throws SchedulerException	{scheduler.pauseTrigger(triggerkey);}public  void pauseTriggers(GroupMatcher<TriggerKey> groupmatcher)throws SchedulerException	{scheduler.pauseTriggers(groupmatcher);}/*** 恢复相关的job任务* @param jobkey* @throws SchedulerException*/public  void resumeJob(JobKey jobkey) throws SchedulerException	{scheduler.pauseJob(jobkey);}public  void resumeJobs(GroupMatcher<JobKey> matcher)throws SchedulerException	{scheduler.resumeJobs(matcher);}public  void resumeTrigger(TriggerKey triggerkey)throws SchedulerException	{scheduler.resumeTrigger(triggerkey);}public  void resumeTriggers(GroupMatcher<TriggerKey>  groupmatcher)throws SchedulerException{scheduler.resumeTriggers(groupmatcher);}/*** 暂停调度中所有的job任务* @throws SchedulerException*/public  void pauseAll() throws SchedulerException{scheduler.pauseAll();}/*** 恢复调度中所有的job的任务* @throws SchedulerException*/public  void resumeAll() throws SchedulerException{scheduler.resumeAll();}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: