一种定时任务调度插件Quartz使用

文档序号:10470991阅读:379来源:国知局
一种定时任务调度插件Quartz使用
【专利摘要】本发明公开了一种定时任务调度插件Quartz使用,属于SPRING框架领域,Quartz用一个小Java库发布文件,这个Java库文件包含了所有Quartz核心功能,这些功能的主要接口(API)是进程(Scheduler)接口;Quartz包括五种主要结构用于实现调度:作业(Job)接口,作业明细(JobDetail)类,触发器(Trigger)抽象类,进程(Scheduler)接口,进程工厂(SchedulerFactory)接口;本发明在Spring中使用,只对作业(Job)编码,触发器(Trigger) 和进程(Scheduler)可以通过配置设置。
【专利说明】
一种定时任务调度插件Quartz使用
技术领域
[0001]本发明涉及计算机软件技术领域,具体地说是一种定时任务调度插件Quartz使用。
【背景技术】
[0002]随着技术的发展,需求的增加,业务的复杂,各个业务之间的联系更加紧密,许多业务的流程关系更加严谨,对硬件需求和单位触发率越来越高,对那些不是特别紧急,但是触发量大,延迟长的业务操作进行指定时间进行操作(如周末,夜间正常业务量少的时候)的要求更加强烈,因为这样既能满足业务高峰期,硬件设施能够支撑住,操作延迟减少,增加用户体验的同时也增加了系统的稳定性能。因此定时任务的使用就显的更加重要。

【发明内容】

[0003]本发明的技术任务是提供一种定时任务调度插件Quartz使用,解决触发量大,延迟长的业务操作进行指定时间进行操作方便的问题,设计使用Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表,提供了简单的操作。
[0004]本发明解决其技术问题所采用的技术方案是:
一种定时任务调度插件Quartz使用,Quartz用一个小Java库发布文件,这个Java库文件包含了所有Quartz核心功能,这些功能的主要接口(API)是进程(Scheduler)接口;它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。
[0005]如果想将软件组件的执行纳入到日程中,它们只需简单地实现作业(Job)接口,这个接口有一个executeO方法。如果希望在日程安排的时间到达时通知组件,那么这些组件应实现触发监听器TriggerListener或者作业监听器JobListener接口。
[0006]Quartz主过程可以在应用中启动或者运行,也可以作为一个独立的应用(带有RMI接口),或者在一个J2EE应用服务器中运行,并且可作为其实J2EE组件的一种引用资源。
[0007]Quartz包括五种主要结构用于实现调度:
作业(Job)接口,
作业明细(JobDetail)类,
触发器(Trigger)抽象类,
进程(Scheduler)接口,
进程工厂(SchedulerFactory)接口 ;
该Quartz在Spring中使用,将所有的任务调度设置放在同一个地方,使任务易于维护,只对作业(Job)编码,触发器(Trigger)和进程(Scheduler)可以通过配置设置,可以使用Pojo Java Bean执行作业(Job),而无需实现作业(Job)接口。
[0008]进作业(Job)接口表示一个作业(job)。一个作业专注做一件事。它的API非常简洁。只有一个execute方法,该方法在作业被执行时有Quartz调度。该方法有一个JobExecuteContext参数,可以通过该参数给executeO方法传递有用信息。
[0009]一些数据可以通过JobDataMap传递给作业。如果一个JobDataMap被注册到作业明细(JobDetaiI)中,就能够在作业中通过JobExecuteContext来访问。JobDetaiI用来描述一个特定Job的信息。Job通过触发器(Trigger)触发。Quartz提供了集中触发器(Trigger)的实现,如Simp IeTrigger和CronTriggerc3SimpleTrigger类似一个简单时钟,你可以定义开始时间,结束时间,重复次数,重复周期C3CronTrigger类似Linux系统中的cron。CronTrigger的设置可以非常详细,如在每个月最后一个周五的上午10:15执行作业。需要注意的是触发器(Trigger)和作业(Job)是具有名字的,可以被赋值给一个组,但在同一组内不能出现同名。你可以对一个组创建一个触发器,在该组内的所有Job都将会执行。进程工厂(SchedulerFactory)用于获得进程(Scheduler)实例,可以用于注册作业和触发器。
[0010]本发明的一种定时任务调度插件Quartz使用与现有技术相比,具有以下有益效果:
Quartz是OpenSymphony开源组织在Job scheduling领域又一开源项目,它可以与J2EE与J2SE应用程序相结合使用也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的JAVA组件或Ejbs;
Quartz主过程可以在应用中启动或者运行,也可以作为一个独立的应用(带有RMI接口),或者在一个J2EE应用服务器中运行,并且可作为J2EE组件的一种引用资源;
在Spring中使用Quartz而不是单独的一个应用,将所有的任务调度设置放在同一个地方,使任务易于维护。只对作业(Job)编码,触发器(Trigger)和进程(Scheduler)可以通过配置设置可以使用Pojo Java Bean执行作业(Job),而无需实现作业(Job)接口。
【具体实施方式】
[0011 ]下面对本发明作进一步说明。
[0012]下面是一个简单的实例java中实现:每十秒钟打印一次欢迎。
[0013]首先实现一个作业:
public class SimpleJob implements Job {
◎Override
public void execute(JobExecut1nContext argO) throws JobExecut1nExcept1n {
System.0ut.println(〃[JOB] Welcome to Quartz!〃);
}
}
定义一个进程(Scheduler),注册触发器和作业: public class SimpleSchedule {
public static void main(String[] args) {
SchedulerFactory factory=new StdSchedulerFactory(); try {
Scheduler scheduler = factory.getScheduler(); scheduler.start(); JobDetai I jobDetai I = new JobDetai I (,,Simple Job〃,nul I,SimpleJob.class);
Trigger simplerTrigger = TriggerUtils.makeSecondlyTrigger(10);simplerTrigger.setName(〃SimpleTrigger〃);
scheduler.scheduleJob(jobDetail, simplerTrigger);
}catch (SchedulerExcept1n e) {
// TODO Auto-generated catch block e.printStackTrace();
}
}
}
这样执行main方法后,每十秒输出[作业(JOB)] Welcome to Quartz !
Quartz 在 spring 中使用:
Spring 中的Quartz API 位于 org.springframework.scheduling.quartz 包中。主要类结构包括:
QuartzJobBean 抽象类
JobDetailBean
SimpleTriggerBean
CronTriggerBean
SchedulerFactoryBean
MethodInvokingDetailFactoryBean
很明显对应实现Quartz中相应的接口 DQuartzJob实现作业(Job) ,JobDetailBean继承作业明细(JobDetai I) 。 S imp Ie Trigger Bean 和 CronTrigger Be an 继承自相应的Trigger0 MethodInvokingJobDetaiIFactoryBean用于在类中调用任何对象的方法D声明作业(Job)
JobDetailBean用于声明作业^可以为其设置作业名,以及需要的数据。
[0014]1、使用Quartz Job实现在xml配置文件中配置
〈bean name=〃simpleJob〃 class=〃org.springframework.scheduling.quartz.JobDetailBean〃>
〈property name=,,jobClass? value=,,com.alibaba.jiang.learn.quartz.SimpleJob,, /> 〈property name=,,jobDataAsMap〃>
<map>
〈entry key=〃message〃 value=,,Welcome to Quartz,, />
</map>
〈/property〉
</bean>
实现作业(Job)类,方式有两种;一种是:
public class SimpleJob extends QuartzJobBean { ?Override
protected void execute Internal(JobExecut1nContext ctx) throwsJobExecut1nExcept1n {
String message = ctx.getJobDetai I().getJobDataMap().getString(〃
message");
System.0ut.println(message);
}
}
另一种是通过setter注入的方式注入message。声明触发器:
〈bean name=〃simpleTrigger〃 class=〃org.springframework.scheduling.quartz.SimpleTriggerBean〃>
〈property name=,,jobDetail,, ref=〃simpleJob〃/>
〈property name=〃startDelay〃 value=〃0〃/>
〈property name=〃repeatlnterval〃 value=,, 10000〃/>
</bean>
声明调度器,设置Job和Tr igger:
〈bean name=〃schedulerFactory〃 class=〃org.springframework.scheduling.quartz.SchedulerFactoryBean〃>
〈property name=,,triggers,)
<list>
〈ref bean=〃simpleTrigger〃/>
</list>
〈/property〉
</bean>
所有都设置好后,可以通过加载Context,调度器将自动执行: public class SimpleSpringQuartz {
public static void main(String[] args) {
Applicat1nContext ctx = new ClassPathXmlApplicat1nContext (〃beans.xml〃);
}
}
2、自定义Pojo Bean实现
Spring中可以使用自定义Po jo Bean,无须继承自Quartz JobBean D首先声明一个PojoBean
〈bean name=〃welcomeBean〃 class=〃com.alibaba.jiang.learn.quartz.WelcomeBe
an〃>
〈property name=,,message" value=,,Welcome to Quartz Method,,/〉
</bean>
对应的Po jo Bean:public class WelcomeBean {private String message;public void setMessage(String message) {this.message = message;
}
public void welcome(){
System.0ut.printIn(message);
}
}
声明MethodInvoking JobDetailFactoryBean:
〈bean name=〃methodInvokingJob〃 class=〃org.springframework.scheduling.quartz.MethodlnvokingJobDetailFactoryBean^)
〈property name=〃targetObject〃 ref=〃welcomeBean〃/>
〈property name=〃targetMethod〃 value=,,welcome,,/〉
</bean>
〈bean name=〃methodTrigger〃 class=〃org.springframework.scheduling.quartz.SimpIeTriggerBean^)
〈property name=,,jobDetail,, ref=〃methodInvokingJob〃 />
〈property name=〃startDelay〃 value=〃0〃/>
〈property name=〃repeatlnterval〃 value=,, 10000〃/>
</bean>0
【主权项】
1.一种定时任务调度插件Quartz使用,其特征在于,Quartz用一个小Java库发布文件,这个Java库文件包含了所有Quartz核心功能,这些功能的主要接口(API)是进程(Scheduler)接口 ; Quartz包括五种主要结构用于实现调度: 作业(Job)接口, 作业明细(JobDetaiI)类, 触发器(Trigger)抽象类, 进程(Scheduler)接口, 进程工厂(SchedulerFactory)接口 ; 该Quartz在Spring中使用,将所有的任务调度设置放在同一个地方,只对作业(Job)编码,触发器(Trigger)和进程(Scheduler)可以通过配置设置,可以使用Pojo Java Bean执行作业(Job),而无需实现作业(Job)接口。2.根据权利要求1所述的一种定时任务调度插件Quartz使用,其特征在于所述所述作业(Job)接口表示一个作业(job),只有一个execute方法,该方法在作业被执行时由Quartz调度。3.根据权利要求1所述的一种定时任务调度插件Quartz使用,其特征在于所述作业明细(JobDetai I)描述一个特定作业(Job)的信息。4.根据权利要求1所述的一种定时任务调度插件Quartz使用,其特征在于所述进程工厂(SchedulerFactory)获得进程(Scheduler)实例,可以用于注册作业(Job)和触发器(Trigger)。
【文档编号】G06F9/48GK105824695SQ201610155395
【公开日】2016年8月3日
【申请日】2016年3月18日
【发明人】张福勋, 杨培强
【申请人】浪潮软件集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1