初探quartz scheduler

本文介绍了Quartz作为任务调度框架在Spring环境中的配置及使用方法。包括如何定义任务(Job)与触发器(Trigger),并提供了具体示例代码。
quartz是opensymphony提供的用来做SCHEDULE的框架

在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 

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接口,继承它可以实现不同的任务实现

  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的所有方法都是官方提供,可以使用.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值