quartz是opensymphony提供的用来做SCHEDULE的框架
在spring中通过org.springframework.scheduling.quartz.SchedulerFactoryBean来获得Schedule类
2.从scheduler中删除一个任务
2.删除Trigger
在spring中通过org.springframework.scheduling.quartz.SchedulerFactoryBean来获得Schedule类
<bean id= class= scope=>
<!-- set quartz scheduler factory configuration location -->
<!-- <property name= value= /> -->
<!-- 系统会在启动时加载 -->
<property name= value= />
</bean>
<bean id= class= scope=>
<property name= ref= />
</bean>
QUARTZ中有Job与Trigger两种概念
一.Job详细描述具体的任务运行代码实现
1.新增一个任务到scheduler
JobDetail job = JobDetail(taskName, Scheduler.DEFAULT_GROUP,DefaultQuartzJob.class);
JobDataMap jobDataMap = job.getJobDataMap();
jobDataMap.put(, task);
job.setDurability();
scheduler.addJob(job, );
==>DefaultQuartzJob
DefaultQuartzJob Job==>TASK接口,继承它可以实现不同的任务实现
Logger logger = Logger.getLogger(DefaultQuartzJob.class);
execute(JobExecutionContext ctx) JobExecutionException JobDataMap jobDataMap = ctx.getJobDetail().getJobDataMap();
TaskTO task = (TaskTO) jobDataMap.get();
Task entryTask = task.getEntryTask();
(entryTask == ) logger
.error( + task.getName()
+ );
;
TaskContext taskContext = DefaultTaskContext();
JobDataMap triggerDataMap = ctx.getTrigger().getJobDataMap();
String[] keys = triggerDataMap.getKeys();
(keys != ) ( i = 0; i < keys.length; i++) Object obj = triggerDataMap.get(keys[i]);
(obj String[]) String [] data=(String[]) obj;
(data.length>0) taskContext.setParameter(keys[i], data[0]);
(obj String) taskContext.setParameter(keys[i], (String)obj);
TaskManage tm = (TaskManage) triggerDataMap
.get(TaskManage.TASKMANAGE_ATTRIBUTE_NAME);
tm.addTriggerExecuteTimes(triggerDataMap
.getString(TaskManage.TRIGGER_ATTRIBUTE_NAME));
(TaskException e) logger.error(
+ task.getName(), e);
entryTask.process(taskContext);
(TaskException e) logger.error(
+ task.getName(), e);
Task
process(TaskContext cxt) TaskException;
String getName();
2.从scheduler中删除一个任务
scheduler.deleteJob(taskName, Scheduler.DEFAULT_GROUP);
二.Trigger定时器,任务与定时器是一对多的关系
1.新建Trigger,初步分为CRONTRIGGER,SIMPLETRIGGER
(TRIGGER_CRON.equals(triggerType)) trigger = CronTrigger(triggerName, Scheduler.DEFAULT_GROUP,
taskName, Scheduler.DEFAULT_GROUP, validStartTime,
validEndTime, triggerPattern);
trigger.setMisfireInstruction(CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING);
trigger = SimpleTrigger(triggerName,
Scheduler.DEFAULT_GROUP, taskName,
Scheduler.DEFAULT_GROUP, validStartTime, validEndTime,
repeatCount, repeatInterval);
trigger.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT);
scheduler.scheduleJob(trigger);
logger.debug( + trigger.getName()
+ );
(SchedulerException e) logger.error( + e.getMessage()
+ + triggerName
+ , e);
TaskException(, + e.getMessage()
+ + triggerName
+ , e);
2.删除Trigger
scheduler.unscheduleJob(triggerName, Scheduler.DEFAULT_GROUP);
(SchedulerException e) logger.error( + e.getMessage()
+ + triggerName
+ , e);
TaskException(, + e.getMessage()
+ + triggerName
+ , e);
ps:以上代码片段只提供参考,不可能运行成功,原因是没有贴出全部依赖代码.scheduler的所有方法都是官方提供,可以使用.
本文介绍了Quartz作为任务调度框架在Spring环境中的配置及使用方法。包括如何定义任务(Job)与触发器(Trigger),并提供了具体示例代码。
1111

被折叠的 条评论
为什么被折叠?



