CN105824695A - 一种定时任务调度插件Quartz使用 - Google Patents
一种定时任务调度插件Quartz使用 Download PDFInfo
- Publication number
- CN105824695A CN105824695A CN201610155395.1A CN201610155395A CN105824695A CN 105824695 A CN105824695 A CN 105824695A CN 201610155395 A CN201610155395 A CN 201610155395A CN 105824695 A CN105824695 A CN 105824695A
- Authority
- CN
- China
- Prior art keywords
- quartz
- job
- trigger
- interface
- scheduler
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000010453 quartz Substances 0.000 title claims abstract description 41
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N silicon dioxide Inorganic materials O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 title claims abstract description 41
- 238000000034 method Methods 0.000 claims abstract description 31
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 7
- 244000046052 Phaseolus vulgaris Species 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 2
- 206010008190 Cerebrovascular accident Diseases 0.000 description 1
- 208000006011 Stroke Diseases 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种定时任务调度插件Quartz使用,属于SPRING框架领域,Quartz用一个小Java库发布文件,这个Java库文件包含了所有Quartz核心功能,这些功能的主要接口(API)是进程(Scheduler)接口;Quartz包括五种主要结构用于实现调度:作业(Job)接口,作业明细(JobDetail)类,触发器(Trigger)抽象类,进程(Scheduler)接口,进程工厂(SchedulerFactory)接口;本发明在Spring中使用,只对作业(Job)编码,触发器(Trigger) 和进程(Scheduler)可以通过配置设置。
Description
技术领域
本发明涉及计算机软件技术领域,具体地说是一种定时任务调度插件Quartz使用。
背景技术
随着技术的发展,需求的增加,业务的复杂,各个业务之间的联系更加紧密,许多业务的流程关系更加严谨,对硬件需求和单位触发率越来越高,对那些不是特别紧急,但是触发量大,延迟长的业务操作进行指定时间进行操作(如周末,夜间正常业务量少的时候)的要求更加强烈,因为这样既能满足业务高峰期,硬件设施能够支撑住,操作延迟减少,增加用户体验的同时也增加了系统的稳定性能。因此定时任务的使用就显的更加重要。
发明内容
本发明的技术任务是提供一种定时任务调度插件Quartz使用,解决触发量大,延迟长的业务操作进行指定时间进行操作方便的问题,设计使用Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表,提供了简单的操作。
本发明解决其技术问题所采用的技术方案是:
一种定时任务调度插件Quartz使用,Quartz用一个小Java库发布文件,这个Java库文件包含了所有Quartz核心功能,这些功能的主要接口(API)是进程(Scheduler)接口;它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。
如果想将软件组件的执行纳入到日程中,它们只需简单地实现作业(Job)接口,这个接口有一个execute()方法。如果希望在日程安排的时间到达时通知组件,那么这些组件应实现触发监听器TriggerListener或者作业监听器JobListener接口。
Quartz主过程可以在应用中启动或者运行,也可以作为一个独立的应用(带有RMI接口),或者在一个J2EE应用服务器中运行,并且可作为其实J2EE组件的一种引用资源。
Quartz包括五种主要结构用于实现调度:
作业(Job)接口,
作业明细(JobDetail)类,
触发器(Trigger)抽象类,
进程(Scheduler)接口,
进程工厂(SchedulerFactory)接口;
该Quartz在Spring中使用,将所有的任务调度设置放在同一个地方,使任务易于维护,只对作业(Job)编码,触发器(Trigger)和进程(Scheduler)可以通过配置设置,可以使用PojoJavaBean执行作业(Job),而无需实现作业(Job)接口。
进作业(Job)接口表示一个作业(job)。一个作业专注做一件事。它的API非常简洁。只有一个execute方法,该方法在作业被执行时有Quartz调度。该方法有一个JobExecuteContext参数,可以通过该参数给execute()方法传递有用信息。
一些数据可以通过JobDataMap传递给作业。如果一个JobDataMap被注册到作业明细(JobDetail)中,就能够在作业中通过JobExecuteContext来访问。JobDetail用来描述一个特定Job的信息。Job通过触发器(Trigger)触发。Quartz提供了集中触发器(Trigger)的实现,如SimpleTrigger和CronTrigger。SimpleTrigger类似一个简单时钟,你可以定义开始时间,结束时间,重复次数,重复周期。CronTrigger类似Linux系统中的cron。CronTrigger的设置可以非常详细,如在每个月最后一个周五的上午10:15执行作业。需要注意的是触发器(Trigger)和作业(Job)是具有名字的,可以被赋值给一个组,但在同一组内不能出现同名。你可以对一个组创建一个触发器,在该组内的所有Job都将会执行。进程工厂(SchedulerFactory)用于获得进程(Scheduler)实例,可以用于注册作业和触发器。
本发明的一种定时任务调度插件Quartz使用与现有技术相比,具有以下有益效果:
Quartz是OpenSymphony开源组织在Jobscheduling领域又一开源项目,它可以与J2EE与J2SE应用程序相结合使用也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的JAVA组件或Ejbs;
Quartz主过程可以在应用中启动或者运行,也可以作为一个独立的应用(带有RMI接口),或者在一个J2EE应用服务器中运行,并且可作为J2EE组件的一种引用资源;
在Spring中使用Quartz而不是单独的一个应用,将所有的任务调度设置放在同一个地方,使任务易于维护。只对作业(Job)编码,触发器(Trigger)和进程(Scheduler)可以通过配置设置可以使用PojoJavaBean执行作业(Job),而无需实现作业(Job)接口。
具体实施方式
下面对本发明作进一步说明。
下面是一个简单的实例java中实现:每十秒钟打印一次欢迎。
首先实现一个作业:
publicclassSimpleJobimplementsJob{
Override
publicvoidexecute(JobExecutionContextarg0)
throwsJobExecutionException{
System.out.println("[JOB]WelcometoQuartz!");
}
}
定义一个进程(Scheduler),注册触发器和作业:
publicclassSimpleSchedule{
publicstaticvoidmain(String[]args){
SchedulerFactoryfactory=newStdSchedulerFactory();
try{
Schedulerscheduler=factory.getScheduler();
scheduler.start();
JobDetailjobDetail=newJobDetail("SimpleJob",null,SimpleJob.class);
TriggersimplerTrigger=TriggerUtils.makeSecondlyTrigger(10);
simplerTrigger.setName("SimpleTrigger");
scheduler.scheduleJob(jobDetail,simplerTrigger);
}catch(SchedulerExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
这样执行main方法后,每十秒输出[作业(JOB)]WelcometoQuartz!
Quartz在spring中使用:
Spring中的QuartzAPI位于org.springframework.scheduling.quartz包中。主要类结构包括:
QuartzJobBean抽象类
JobDetailBean
SimpleTriggerBean
CronTriggerBean
SchedulerFactoryBean
MethodInvokingDetailFactoryBean
很明显对应实现Quartz中相应的接口。QuartzJob实现作业(Job),JobDetailBean继承作业明细(JobDetail)。SimpleTriggerBean和CronTriggerBean继承自相应的Trigger。MethodInvokingJobDetailFactoryBean用于在类中调用任何对象的方法。声明作业(Job)
JobDetailBean用于声明作业。可以为其设置作业名,以及需要的数据。
1、使用QuartzJob实现
在xml配置文件中配置
<beanname="simpleJob"class="org.springframework.scheduling.quartz.JobDetailBean">
<propertyname="jobClass"value="com.alibaba.jiang.learn.quartz.SimpleJob"/>
<propertyname="jobDataAsMap">
<map>
<entrykey="message"value="WelcometoQuartz"/>
</map>
</property>
</bean>
实现作业(Job)类,方式有两种;一种是:
publicclassSimpleJobextendsQuartzJobBean{
Override
protectedvoidexecuteInternal(JobExecutionContextctx)throwsJobExecutionException{
Stringmessage=ctx.getJobDetail().getJobDataMap().getString("message");
System.out.println(message);
}
}
另一种是通过setter注入的方式注入message。声明触发器:
<beanname="simpleTrigger"class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<propertyname="jobDetail"ref="simpleJob"/>
<propertyname="startDelay"value="0"/>
<propertyname="repeatInterval"value="10000"/>
</bean>
声明调度器,设置Job和Trigger:
<beanname="schedulerFactory"class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<propertyname="triggers">
<list>
<refbean="simpleTrigger"/>
</list>
</property>
</bean>
所有都设置好后,可以通过加载Context,调度器将自动执行:
publicclassSimpleSpringQuartz{
publicstaticvoidmain(String[]args){
ApplicationContextctx=newClassPathXmlApplicationContext("beans.xml");
}
}
2、自定义PojoBean实现
Spring中可以使用自定义PojoBean,无须继承自QuartzJobBean。首先声明一个PojoBean
<beanname="welcomeBean"class="com.alibaba.jiang.learn.quartz.WelcomeBean">
<propertyname="message"value="WelcometoQuartzMethod"/>
</bean>
对应的PojoBean:
publicclassWelcomeBean{
privateStringmessage;
publicvoidsetMessage(Stringmessage){
this.message=message;
}
publicvoidwelcome(){
System.out.println(message);
}
}
声明MethodInvokingJobDetailFactoryBean:
<beanname="methodInvokingJob"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<propertyname="targetObject"ref="welcomeBean"/>
<propertyname="targetMethod"value="welcome"/>
</bean>
<beanname="methodTrigger"class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<propertyname="jobDetail"ref="methodInvokingJob"/>
<propertyname="startDelay"value="0"/>
<propertyname="repeatInterval"value="10000"/>
</bean>。
Claims (4)
1.一种定时任务调度插件Quartz使用,其特征在于,Quartz用一个小Java库发布文件,这个Java库文件包含了所有Quartz核心功能,这些功能的主要接口(API)是进程(Scheduler)接口;
Quartz包括五种主要结构用于实现调度:
作业(Job)接口,
作业明细(JobDetail)类,
触发器(Trigger)抽象类,
进程(Scheduler)接口,
进程工厂(SchedulerFactory)接口;
该Quartz在Spring中使用,将所有的任务调度设置放在同一个地方,只对作业(Job)编码,触发器(Trigger)和进程(Scheduler)可以通过配置设置,可以使用PojoJavaBean执行作业(Job),而无需实现作业(Job)接口。
2.根据权利要求1所述的一种定时任务调度插件Quartz使用,其特征在于所述所述作业(Job)接口表示一个作业(job),只有一个execute方法,该方法在作业被执行时由Quartz调度。
3.根据权利要求1所述的一种定时任务调度插件Quartz使用,其特征在于所述作业明细(JobDetail)描述一个特定作业(Job)的信息。
4.根据权利要求1所述的一种定时任务调度插件Quartz使用,其特征在于所述进程工厂(SchedulerFactory)获得进程(Scheduler)实例,可以用于注册作业(Job)和触发器(Trigger)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610155395.1A CN105824695A (zh) | 2016-03-18 | 2016-03-18 | 一种定时任务调度插件Quartz使用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610155395.1A CN105824695A (zh) | 2016-03-18 | 2016-03-18 | 一种定时任务调度插件Quartz使用 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105824695A true CN105824695A (zh) | 2016-08-03 |
Family
ID=56523593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610155395.1A Pending CN105824695A (zh) | 2016-03-18 | 2016-03-18 | 一种定时任务调度插件Quartz使用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105824695A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775985A (zh) * | 2016-12-26 | 2017-05-31 | 中国建设银行股份有限公司 | 一种批处理任务调度方法及装置 |
CN107562529A (zh) * | 2017-10-24 | 2018-01-09 | 郑州云海信息技术有限公司 | 一种业务系统中定时任务的实现方法及装置 |
CN107704315A (zh) * | 2017-03-31 | 2018-02-16 | 广东网金控股股份有限公司 | 一种基于Quartz的定时任务调度服务框架及方法 |
CN108182108A (zh) * | 2017-12-19 | 2018-06-19 | 山东浪潮商用系统有限公司 | 一种定时任务集群及其执行方法 |
CN108920206A (zh) * | 2018-06-13 | 2018-11-30 | 北京交通大学 | 一种插件调度方法及装置 |
CN110688212A (zh) * | 2019-09-26 | 2020-01-14 | 山东浪潮通软信息科技有限公司 | 基于quartz的定时管理方法及系统 |
CN111143043A (zh) * | 2019-12-02 | 2020-05-12 | 天津同阳科技发展有限公司 | 基于Quartz服务的计划任务处理方法、装置、设备及介质 |
CN112799806A (zh) * | 2021-01-22 | 2021-05-14 | 平安养老保险股份有限公司 | 定时任务处理方法、装置、计算机设备及可读存储介质 |
-
2016
- 2016-03-18 CN CN201610155395.1A patent/CN105824695A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775985A (zh) * | 2016-12-26 | 2017-05-31 | 中国建设银行股份有限公司 | 一种批处理任务调度方法及装置 |
CN107704315A (zh) * | 2017-03-31 | 2018-02-16 | 广东网金控股股份有限公司 | 一种基于Quartz的定时任务调度服务框架及方法 |
CN107562529A (zh) * | 2017-10-24 | 2018-01-09 | 郑州云海信息技术有限公司 | 一种业务系统中定时任务的实现方法及装置 |
CN108182108A (zh) * | 2017-12-19 | 2018-06-19 | 山东浪潮商用系统有限公司 | 一种定时任务集群及其执行方法 |
CN108920206A (zh) * | 2018-06-13 | 2018-11-30 | 北京交通大学 | 一种插件调度方法及装置 |
CN110688212A (zh) * | 2019-09-26 | 2020-01-14 | 山东浪潮通软信息科技有限公司 | 基于quartz的定时管理方法及系统 |
CN111143043A (zh) * | 2019-12-02 | 2020-05-12 | 天津同阳科技发展有限公司 | 基于Quartz服务的计划任务处理方法、装置、设备及介质 |
CN111143043B (zh) * | 2019-12-02 | 2021-08-10 | 天津同阳科技发展有限公司 | 基于Quartz服务的计划任务处理方法、装置、设备及介质 |
CN112799806A (zh) * | 2021-01-22 | 2021-05-14 | 平安养老保险股份有限公司 | 定时任务处理方法、装置、计算机设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105824695A (zh) | 一种定时任务调度插件Quartz使用 | |
CN103679392B (zh) | 一种任务调度处理方法及系统 | |
CN104572290A (zh) | 消息处理线程的控制方法及装置 | |
CN106126332A (zh) | 分布式定时任务调度系统及方法 | |
US8984034B2 (en) | Calculation engine and calculation providers | |
US11704616B2 (en) | Systems and methods for distributed business processmanagement | |
CN104156265A (zh) | 定时任务的处理方法和处理装置 | |
CN106445705A (zh) | 基于RabbitMQ和Socket.io的平台级联方法和系统 | |
US9921882B2 (en) | Information processing system, deployment method, processing device, and deployment device | |
CN110569090A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN105630588A (zh) | 一种分布式作业调度方法和系统 | |
CN107704315A (zh) | 一种基于Quartz的定时任务调度服务框架及方法 | |
US7739368B2 (en) | Method for interacting with user and terminal thereof | |
CN107277171A (zh) | 一种基于quartz的可定制消息发送方法 | |
CN103530097A (zh) | 一种跨中间件平台的组件的实现方法和装置 | |
CN106815270B (zh) | 一种服务动态管理的方法及装置 | |
CN112559161A (zh) | 一种任务调度方法及系统 | |
CN103645940A (zh) | 远程调用方法及系统 | |
CN108509264A (zh) | 超时任务调度系统及方法 | |
CN107577462A (zh) | 基于流的界面事件处理系统 | |
CN103092692A (zh) | 适用于软件批处理作业的作业管理器实现方法及作业管理器 | |
CN103135984A (zh) | 用于向分布式网络环境自动部署流程的方法和系统 | |
US9195704B2 (en) | Automated logging for object-oriented environments | |
Vadakkumcheril et al. | A simple implementation of uml sequence diagram to Java code generation through XMI representation | |
CN104657121B (zh) | 数据处理系统及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160803 |
|
WD01 | Invention patent application deemed withdrawn after publication |