Quartz-2.2.1スケジューラフレームワーク新規、修正、削除のタイミングタスクを実現

20388 ワード

Quartzタスクスケジューリングフレームワークに関するAPIを理解する必要がある場合は、この比較的簡単なブログを参照してください.
http://blog.csdn.net/hello_world_qwp/article/details/79021281
JavaプロジェクトでQuartz-2.2.1タスクスケジューリングフレームワークを使用する場合、パラメータの転送、およびタイミングタスクの追加、変更、削除を行います.
Job :
package com.etc.clear.data.job;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *         
 * 

* * @ClassName : ExpDataJob *

*

* @Description : TODO *

*

* @Author : HuaZai *

*

* @ContactInformation : [email protected]/[email protected] *

* * @Date : 2018 1 4 4:05:10 * @Version : V1.0.0 * */
public class ExpDataJob implements Job { private static final Logger log = LoggerFactory.getLogger(ExpDataJob.class); @Override public void execute(JobExecutionContext context) throws JobExecutionException { log.info("============= 《 》 ...."+context.getJobDetail().getJobDataMap().getString("param")); } }

Utils :
package com.etc.clear.data.utils;

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.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.etc.clear.img.utils.ImgQuartzUtils;

/**
 *          ( 、 、 、 )
 * 

* * @ClassName : DataQuartzUtils *

*

* @Description : TODO *

*

* @Author : HuaZai *

*

* @ContactInformation : [email protected]/[email protected] *

* * @Date : 2018 1 5 4:37:08 * @Version : V1.0.0 * */
public class DataQuartzUtils { // private static final String JOB_GROUP_NAME = "JOB_DATAJOBGROUP_NAME"; // private static final String TRIGGER_GROUP_NAME = "TRIGGER_DATATRIGGERGROUP_NAME"; // private static final Logger log = LoggerFactory.getLogger(ImgQuartzUtils.class);// private static SchedulerFactory factory = new StdSchedulerFactory(); // /** * *

* * @Title : addJobToSecheduler *

*

* @Description : TODO *

*

* @Author : HuaZai *

* * @Date : 2018 1 10 11:54:53 */
public static void addJobToSecheduler(String jobName, String triggerName, Class extends Job> jobClass, String cron) { try { // SchedulerFactory Scheduler Scheduler scheduler = factory.getScheduler(); // jobDetail JobDetail detail = JobBuilder.newJob(jobClass) // .withIdentity(jobName, JOB_GROUP_NAME) // .build(); // // JobDataMap detail.getJobDataMap().put("param", "huazai"); // CronSchedule Trigger trigger = TriggerBuilder.newTrigger()// TriggerBuilder .withIdentity(triggerName, TRIGGER_GROUP_NAME)// .startNow()// .withSchedule( // CronScheduleBuilder.cronSchedule(cron)) .build();// // job trigger Scheduler scheduler.scheduleJob(detail, trigger); } catch (Exception e) { e.printStackTrace(); log.info(e.toString()); } } /** * *

* * @Title : updateJobToSecheduler *

*

* @Description : TODO *

*

* @Author : HuaZai *

* * @Date : 2018 1 10 2:30:35 */
public static void updateJobToSecheduler(String jobName, String triggerName, String cron) { try { // SchedulerFactory Scheduler Scheduler scheduler = factory.getScheduler(); // TriggerKey key = TriggerKey.triggerKey(triggerName, TRIGGER_GROUP_NAME); CronTrigger cronTrigger = (CronTrigger) scheduler.getTrigger(key); if (cronTrigger != null) { // 、 , /* JobKey jobKey = JobKey.jobKey(jobName, JOB_GROUP_NAME); JobDetail jobDetail = scheduler.getJobDetail(jobKey); Class extends Job> jobClass = jobDetail.getJobClass(); // removeJobToScheduler(jobName, triggerName); // addJobToSecheduler(jobName, triggerName, jobClass, cron); */ // 、 // CronSchedule Trigger trigger = TriggerBuilder.newTrigger()// TriggerBuilder .withIdentity(triggerName, TRIGGER_GROUP_NAME)// .startNow()// .withSchedule( // CronScheduleBuilder.cronSchedule(cron)) .build();// // rescheduleJob scheduler.rescheduleJob(key, trigger); } else { log.info("============= ============="); } } catch (Exception e) { e.printStackTrace(); log.info(e.toString()); } } /** * *

* * @Title : removeJobToScheduler *

*

* @Description : TODO *

*

* @Author : HuaZai *

* * @Date : 2018 1 10 3:30:56 */
public static void removeJobToScheduler(String jobName, String triggerName) { try { // SchedulerFactory Scheduler Scheduler scheduler = factory.getScheduler(); TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, TRIGGER_GROUP_NAME); // : , , Scheduler , scheduler.pauseTrigger(triggerKey);// scheduler.unscheduleJob(triggerKey);// JobKey jobKey = JobKey.jobKey(jobName, JOB_GROUP_NAME); scheduler.deleteJob(jobKey);// // Thread.sleep(3000); } catch (Exception e) { e.printStackTrace(); log.info(e.toString()); } } /** * *

* * @Title : startJobToScheduler *

*

* @Description : TODO *

*

* @Author : HuaZai *

* * @Date : 2018 1 10 4:43:11 */
public static void startJobToScheduler() { try { // SchedulerFactory Scheduler Scheduler scheduler = factory.getScheduler(); if (!scheduler.isShutdown()) { scheduler.start();// } } catch (Exception e) { e.printStackTrace(); } } /** * *

* * @Title : shutdowJobToScheduler *

*

* @Description : TODO *

*

* @Author : HuaZai *

* * @Date : 2018 1 10 4:44:55 */
public static void shutdowJobToScheduler() { try { // SchedulerFactory Scheduler Scheduler scheduler = factory.getScheduler(); scheduler.shutdown(true);// log.info("============= ============="); } catch (Exception e) { e.printStackTrace(); } } }

Commons :
package com.etc.clear.data.common;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.etc.clear.data.job.ExpDataJob;
import com.etc.clear.data.utils.DataQuartzUtils;

/**
 *          
 * 

* * @ClassName : InitDataQuartzCommon *

*

* @Description : TODO *

*

* @Author : HuaZai *

*

* @ContactInformation : [email protected]/[email protected] *

* * @Date : 2018 1 4 3:45:09 * @Version : V1.0.0 * */
public class InitDataQuartzCommon { private static String JOB_NAME = "ExpDataJob"; private static String TRIGGER_NAME = "ExpDataTrigger"; private static String EXP_DATA_CRON_START = "0/3 * * * * ?"; private static String EXP_DATA_CRON_UPDATE = "0/5 * * * * ?"; private static Logger log = LoggerFactory.getLogger(InitDataQuartzCommon.class); /** * *

* * @Title : startClearData *

*

* @Description : TODO *

*

* @Author : HuaZai *

* * @Date : 2018 1 10 5:00:09 */
public void startClearData() { try { log.info("============= ============="); DataQuartzUtils.addJobToSecheduler(JOB_NAME, TRIGGER_NAME, ExpDataJob.class, EXP_DATA_CRON_START); log.info("============= ============="); DataQuartzUtils.startJobToScheduler(); Thread.sleep(9000);// log.info("============= ============="); DataQuartzUtils.updateJobToSecheduler(JOB_NAME, TRIGGER_NAME, EXP_DATA_CRON_UPDATE); Thread.sleep(10000);// log.info("============= ============="); DataQuartzUtils.removeJobToScheduler(JOB_NAME, TRIGGER_NAME); log.info("============= ============="); DataQuartzUtils.shutdowJobToScheduler(); Thread.sleep(5000);// log.info("============= ============="); } catch (Exception e) { e.printStackTrace(); } } }

Main :
package com.etc.clear;

import com.etc.clear.data.common.InitDataQuartzCommon;

/**
 *       /      
 * 

* * @ClassName : ClsMain *

*

* @Description : TODO *

*

* @Author : HuaZai *

*

* @ContactInformation : [email protected]/[email protected] *

* * @Date : 2018 1 3 1:21:56 * * @Version : V1.0.0 * */
public class ApplicationMain { public static void main(String[] args) { // InitDataQuartzCommon dataQuartzCommon = new InitDataQuartzCommon(); // dataQuartzCommon.startClearData(); } }

運転効果は下図:Quartz-2.2.1 调度框架实现新增、修改、删除定时任务_第1张图片
このインスタンスのソースコードのダウンロードアドレス:http://download.csdn.net/download/hello_world_qwp/10208195