CN105824695A - 一种定时任务调度插件Quartz使用 - Google Patents

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

Info

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
Application number
CN201610155395.1A
Other languages
English (en)
Inventor
张福勋
杨培强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Software Group Co Ltd
Original Assignee
Inspur Software Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Software Group Co Ltd filed Critical Inspur Software Group Co Ltd
Priority to CN201610155395.1A priority Critical patent/CN105824695A/zh
Publication of CN105824695A publication Critical patent/CN105824695A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling 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使用,解决触发量大,延迟长的业务操作进行指定时间进行操作方便的问题,设计使用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)。
CN201610155395.1A 2016-03-18 2016-03-18 一种定时任务调度插件Quartz使用 Pending CN105824695A (zh)

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)

* Cited by examiner, † Cited by third party
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 平安养老保险股份有限公司 定时任务处理方法、装置、计算机设备及可读存储介质

Cited By (9)

* Cited by examiner, † Cited by third party
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