CN115061797B - 一种Quartz组件的调用方法及装置 - Google Patents
一种Quartz组件的调用方法及装置 Download PDFInfo
- Publication number
- CN115061797B CN115061797B CN202210698023.9A CN202210698023A CN115061797B CN 115061797 B CN115061797 B CN 115061797B CN 202210698023 A CN202210698023 A CN 202210698023A CN 115061797 B CN115061797 B CN 115061797B
- Authority
- CN
- China
- Prior art keywords
- task
- component
- information
- quartz
- configuration information
- 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.)
- Active
Links
Images
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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种Quartz组件的调用方法及装置,所述方法包括:将预设的任务调用参数添加到Quartz组件的数据库中,其中,所述任务调用参数包括任务调度配置信息和任务触发器;当获取程序启动指令时,从所述数据库存储的所述任务调用参数中提取执行程序的配置信息;基于所述配置信息创建任务执行参数,并将所述任务执行参数注册至Quartz组件中,以供Quartz组件执行对应的程序任务。本发明预先将任务所需的信息注册到Quartz组件的数据库中,让Quartz组件中的各个子组件进行自动初始化并提取信息,使得Quartz组件可以自动执行相应的程序任务处理,实现任务的自动化处理,以提高操作的效率。
Description
技术领域
本发明涉及Quartz组件的应用技术领域,尤其涉及一种Quartz组件的调用方法及装置。
背景技术
Quartz是一个由java编写的开源的Job调度框架,常见主流的基于Quartz的任务调度组件有XXL-JOB、Elastic-Job、Saturn、PowerJob。
Quartz组件设有任务调度器(Scheduler,是Quzrtz组件提供的子组件之一)。当需要注册一个定时任务时,外部系统可以将任务调度配置信息(JobDetail,用于告知Quartz组件关于任务的名称、Job的具体实现代码类、Job运行时参数等信息)和任务触发器(Trigger,负责对Job进行触发调度)注册到Scheduler中,让Scheduler根据Trigger的触发策略对Trigger进行调度,使得Trigger再根据JobDetail的信息实际对Job进行触发,从而完成定时任务的执行。
但在调用Quartz组件的过程中有如下技术问题:在使用时往往需要引入zookeeper,mesos、redis等第三方组件,基于第三方组件才能触发调用任务调度器Scheduler,使Quartz组件执行任务,增加了操作的难度以及资源的消耗,而且额外引入组件需要耦合各个组件的代码,进一步增加了开发和调用的难度。
发明内容
本发明提出一种Quartz组件的调用方法及装置,所述方法可以预先将任务调度配置信息和任务触发器注册到Quartz组件的数据库中,当需要执行任务时,可以直接从数据库中提取任务所需的数据,以提高操作的效率,降低操作的难度。
本发明实施例的第一方面提供了一种Quartz组件的调用方法,所述方法包括:
将预设的任务调用参数添加到Quartz组件的数据库中,其中,所述任务调用参数包括任务调度配置信息和任务触发器;
当获取程序启动指令时,从所述数据库存储的所述任务调用参数中提取执行程序的配置信息;
基于所述配置信息创建任务执行参数,并将所述任务执行参数注册至Quartz组件中,以供Quartz组件执行对应的程序任务。
在第一方面的一种可能的实现方式中,所述将预设的任务调用参数添加到Quartz组件的数据库中,包括:
对所述Quartz组件进行初始化处理,得到初始化组件;
分别创建任务调度配置信息和任务触发器;
以所述创建任务调度配置信息和所述任务触发器为参数,注册到所述初始化组件的任务调度器中,并存储在所述初始化组件对应数据库的数据表中。
在第一方面的一种可能的实现方式中,在所述从所述数据库存储的所述任务调用参数中提取执行程序的配置信息的步骤前,所述方法还包括:
判断所述数据库的数据表是否完成数据化处理;
若确定所述数据表未完成数据化处理,则获取外部数据的数据源类型;
基于所述数据源类型查找用于连接外接数据库的交互组件,并利用所述交互组件的组件函数查找所述数据表对应数据库类型;
获取所述数据库类型的脚本文件,并控制所述交互组件执行所述脚本文件,以所述交互组件的执行结果为所述数据表的初始化执行策略。
在第一方面的一种可能的实现方式中,所述初始化处理,包括:
引入Quartz组件的基础文件;
对所述基础文件的QuartzJob注解进行定义,并纳入定时任务中。
在第一方面的一种可能的实现方式中,所述从所述数据库存储的所述任务调用参数中提取执行程序的配置信息,包括:
对所述Quartz组件的任务调度器进行调度处理,得到处理调度器;
从所述处理调度器中扫描并遍历带有QuartzJob注解的注解信息;
读取所述注解信息得到执行程序所需的配置信息。
在第一方面的一种可能的实现方式中,所述对所述Quartz组件的任务调度器进行调度处理,得到处理调度器,包括:
读取所述任务调度器在运行环境中预设的配置文件,并从所述配置文件中提取默认配置项信息;
利用所述默认配置项信息与外部数据对应的数据接口创建数据源连接接口;
采用所述数据源连接接口创建定时调度器;
使用所述默认配置项信息对所述定时调度器的函数进行初始化,得到处理调度器。
在第一方面的一种可能的实现方式中,所述读取所述注解信息得到执行程序所需的配置信息,包括:
判断所述注解信息中是否包含实现Quartz组件任务的接口信息;
若所述注解信息包含实现Quartz组件任务的接口信息,则读取所述注解信息,得到程序的配置信息;
若所述注解信息不包含实现Quartz组件任务的接口信息,则发出告警信息。
在第一方面的一种可能的实现方式中,其中,所述任务执行参数包括任务执行触发器和任务执行调度信息;
所述基于所述配置信息创建任务执行参数,包括:
从所述配置信息中提取任务动作参数,基于任务动作参数生成任务执行触发器,其中,所述任务动作参数包括任务表达式、固定频率、任务运行次数、任务延迟和任务名称;
从所述配置信息中提取任务代码类信息,基于预设的调度创建函数与任务代码类信息生成任务执行调度信息。
在第一方面的一种可能的实现方式中,所述程序启动指令包括Spring容器环境的程序指令和原生环境的程序指令。
本发明实施例的第二方面提供了一种Quartz组件的调用装置,所述装置包括:
添加模块,用于将预设的任务调用参数添加到Quartz组件的数据库中,其中,所述任务调用参数包括任务调度配置信息和任务触发器;
提取模块,用于当获取程序启动指令时,从所述数据库存储的所述任务调用参数中提取执行程序的配置信息;
执行模块,用于基于所述配置信息创建任务执行参数,并将所述任务执行参数注册至Quartz组件中,以供Quartz组件执行对应的程序任务。
相比于现有技术,本发明实施例提供的一种Quartz组件的调用方法及装置,其有益效果在于:本发明可以预先将任务调度配置信息和任务触发器注册到Quartz组件的数据库中,当需要执行任务时,可以基于预先注册的信息,让Quartz组件中的各个子组件(如Scheduler、Trigger和JobDetail)进行自动初始化并提取信息,使得Quartz组件可以自动执行相应的程序任务处理,无需关于和管理Quartz组件的使用处理流程,实现任务的自动化处理,以提高操作的效率,而且整个过程无需调用第三方系统,也无需耦合各个组件的代码,可以进一步降低操作的难度并提升处理的工作效率,也可以降低资源的消耗。
附图说明
图1是本发明一实施例提供的一种Quartz组件的调用方法的流程示意图;
图2是本发明一实施例提供的创建任务调度配置信息的操作流程图;
图3是本发明一实施例提供的创建任务触发的调动信息的操作流程图;
图4是本发明一实施例提供的调度处理的操作流程图;
图5是本发明一实施例提供的数据化处理的操作流程图;
图6是本发明一实施例提供的一种Quartz组件的调用方法的操作流程图一;
图7是本发明一实施例提供的一种Quartz组件的调用方法的操作流程图二;
图8是本发明一实施例提供的一种Quartz组件的调用装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
名词解析:
Job:定时任务接口,是Quzrtz组件提供的子组件之一,是任务调度的最小单元,外部业务可实现该接口以达到拓展的目的;
JobDetail:任务调度配置信息,用于告知Quartz组件任务的名称、Job的具体实现代码类、Job运行时参数等信息;
Trigger:任务触发器,是Quzrtz组件提供的子组件之一,负责对Job进行触发调度;
Scheduler:任务调度器,是Quzrtz组件提供的子组件之一,当需要注册一个定时任务时,外部系统可提供JobDetail和Trigger注册到Scheduler中,Scheduler负责根据Trigger的触发策略,对Trigger进行调度,Trigger在根据JobDetail的信息实际对Job进行触发,从而完成定时任务的执行。
DataSource:数据源接口,为Java语言javax.sql包下提供的用于管理数据库连接的接口类。
ConnectionProvider:数据源连接提供接口,是Quzrtz组件提供的子组件之一,用于为Quartz整体运行提供数据库连接;
StdSchedulerFactory:是Quzrtz组件提供的子组件之一,用于提供创建一种标准的可以把定时任务信息持久化的Scheduler;
Spring容器:一种第三方开源Java代码对象管理框架。
在现有技术中,Quartz组件设有任务调度器(Scheduler,是Quzrtz组件提供的子组件之一)。当需要注册一个定时任务时,外部系统可以将任务调度配置信息(JobDetail,用于告知Quartz组件关于任务的名称、Job的具体实现代码类、Job运行时参数等信息)和任务触发器(Trigger,负责对Job进行触发调度)注册到Scheduler中,让Scheduler根据Trigger的触发策略对Trigger进行调度,使得Trigger再根据JobDetail的信息实际对Job进行触发,从而完成定时任务的执行。
但在调用Quartz组件的过程中有如下技术问题:在使用时往往需要引入zookeeper,mesos、redis等第三方组件,基于第三方组件才能触发调用任务调度器Scheduler,使Quartz组件执行任务,增加了操作的难度以及资源的消耗,而且额外引入组件需要耦合各个组件的代码,进一步增加了开发和调用的难度。
为了解决上述问题,下面将通过以下具体的实施例对本申请实施例提供的一种Quartz组件的调用方法进行详细介绍和说明。
参照图1,示出了本发明一实施例提供的一种Quartz组件的调用方法的流程示意图。
其中,作为示例的,所述Quartz组件的调用方法,可以包括:
S11、将预设的任务调用参数添加到Quartz组件的数据库中,其中,所述任务调用参数包括任务调度配置信息和任务触发器。
任务调度配置信息可以是JobDetail,可以包括:用于告知Quartz组件任务的名称、Job的具体实现代码类、Job运行时参数等信息。任务触发器(Trigger)具体可以是负责对Job进行触发调度的信息。
通过预先将上述两种信息添加至Quartz组件的数据库中,可以在调用Quartz组件时直接从数据库中提取执行任务所需要的相关资讯,进而无需再耦合各个组件的代码或者调用第三方,即可执行,以提高操作的效率。
其中,作为示例的,步骤S11可以包括以下子步骤:
S111、对所述Quartz组件进行初始化处理,得到初始化组件。
在一实施例中,所述初始化处理可以包括:
S1111、引入Quartz组件的基础文件。
其中,基础文件可以是Quartz依赖及基础配置的文件,具体地,可以下载Quartz组件包,对组件包进行解压后可以得到基础文件。
S1112、对所述基础文件的QuartzJob注解进行定义,并纳入定时任务中。
具体地,可以定义@QuartzJob注解。
在实际操作时,可以在Quartz组件初始化时,扫描系统整体代码类,当发现代码类使用@QuartzJob注解标注时,则纳入定时任务中。
其中,QuartzJob注解字段属性可以包括:
name:quartz任务名称,默认取当前代码类名;
cron:任务执行的cron表达式,默认为空;
fixedRate:任务执行的固定频率运行,单位:毫秒,默认值为-1;
count:任务的总运行次数,如果小于1,代表无限循环运行;
initialDelay:任务延迟启动的时间,单位:毫秒,默认值为-1,代表程序启动后立刻开始任务。
需要说明的是,QuartzJob注解的作用是标注该代码类是一个定时任务代码类,需要注册到Quartz组件中。
另外,本发明可以支持分布式部署,可以基于集群模式做封装,具体可以是对初始化处理的各个操作均进行封装,具体操作包括:
1.引入在触发本发明的操作时,会同时引入Quartz依赖包;
2.初始化Quartz基础数据表(由TableInitializer完成);
3.初始化Scheduler(由QuartzConfigurator完成quartz.properties的读取初始化以及配置Scheduler);
4.根据业务逻辑定义JobDetail子组件和Trigger子组件并注册到Scheduler中,用户只需要在业务代码中使用QuartzJob标注并配置QuartzJob的cron、fixedRate、count、initialDelay等属性,最后实现org.quartz.Job接口即可。
上述各个初始化处理中均对Quartz的一切都做了封装,包括基础数据表的初始化、Quart组件以及子组件的初始化、任务的初始化以及注册,这可以在使用时让用户完全感知不到Quartz的存在,以降低操作的难度。
S112、分别创建任务调度配置信息和任务触发器。
参照图2,示出了本发明一实施例提供的创建任务调度配置信息的操作流程图。
具体地,可以是使用Java语言提供的机制,解析带有QuartzJob注解的代码类,获取得到QuartzJob注解的代码类的class属性。
然后使用JobBuilder提供的函数创建任务调度配置信息(JobDetail)。
JobBuilder是Quartz的子组件,用于创建任务调度配置信息(JobDetail)对象。
参照图3,示出了本发明一实施例提供的创建任务触发的调动信息的操作流程图。
具体地,从QuartzJob注解中提取quartz任务名称(name)、任务执行的cron表达式(cron)、固定频率(fixedRate)、任务的总运行次数(count)、任务延迟启动的时间(initialDelay)。
若cron为空,则使用cron创建任务触发器(Trigger),得到CronTrigger;若cron不为空,则使用name、fixedRate、count、initialDelay创建任务触发器(Trigger),得到SimpleTrigger。
其中,CronTrigger和SimpleTrigger都是Trigger的具体实现类,都是Quartz的子组件,CronTrigger的运行规则是基于cron表达式运行,SimpleTrigger运行规则是基于固定频率(fixedRate)、执行次数(count)、延迟开始初始化(initialDelay)运行。
S113、以所述创建任务调度配置信息和所述任务触发器为参数,注册到所述初始化组件的任务调度器中,并存储在所述初始化组件对应数据库的数据表中。
具体地,可以将Trigger和JobDetail注册到初始化组件的任务调度器(Scheduler)中的代码,注册到Scheduler中时,使用jobDetail和trigger作为参数,调用scheduler的scheduleJob方法即可,其余逻辑则交由scheduler该组件执行。
S12、当获取程序启动指令时,从所述数据库存储的所述任务调用参数中提取执行程序的配置信息。
其中,程序启动指令可以是任务执行指令。
在获取程序启动指令后,可以响应该指令并从数据库所存储的任务调用参数中提取用于执行程序任务的相关配置信息,以简化整个任务操作流程,提高执行的效率。
在一可选的实施例中,步骤S12可以包括以下子步骤:
S121、对所述Quartz组件的任务调度器进行调度处理,得到处理调度器。
其中,调度处理可以是Quartz组件中的子组件QuartzConfigurator的运行流程。
在一实施例中,子步骤S121可以包括以下子步骤:
S1211、读取所述任务调度器在运行环境中预设的配置文件,并从所述配置文件中提取默认配置项信息。
S1212、利用所述默认配置项信息与外部数据对应的数据接口创建数据源连接接口。
S1213、采用所述数据源连接接口创建定时调度器。
S1214、使用所述默认配置项信息对所述定时调度器的函数进行初始化,得到处理调度器。
参照图4,示出了本发明一实施例提供的调度处理的操作流程图。
可以读取在当前的运行环境中,任务调度器对应的配置文件quartz。Properties,然后判断是否能读取到该配置文件,若能读取到,则加载配置文件中的所有配置项,以该配置项覆盖Quartz组件的默认配置项,作为新的默认配置项信息;若不能读取到,则使用Quartz组件的默认配置项,作为新的默认配置项信息。
接着,使用默认配置项信息以及外部数据对应的数据接口(datasource,为Java语言javax.sql包下提供的用于管理数据库连接的接口类)创建数据源连接接口(又称数据源连接提供接口,ConnectionProvider,是Quzrtz组件提供的子组件之一,用于为Quartz整体运行提供数据库连接)。然后采用数据源连接接口创建定时调度器(StdSchedulerFactory:是Quzrtz组件提供的子组件之一,用于提供创建一种标准的可以把定时任务信息持久化的任务调度器)。最后,使用默认配置项信息,并调用定时调度器的配置函数进行初始化,在调用定时调度器的getScheduler函数,得到处理后的任务调度器,作为处理调度器。
S122、从所述处理调度器中扫描并遍历带有QuartzJob注解的注解信息。
在一实施例中,所述注解信息可以是用户预先在QuartzJob添加了注解的信息。
S123、读取所述注解信息得到执行程序所需的配置信息。
可以从注解信息中读取得到执行程序所需的配置信息,其中,配置信息可以包括任务名称、时间、次数和任务内容等。
在一实施例中,子步骤S123可以包括以下子步骤:
S1231、判断所述注解信息中是否包含实现Quartz组件任务的接口信息。
S1232、若所述注解信息包含实现Quartz组件任务的接口信息,则读取所述注解信息,得到程序的配置信息。
S1233、若所述注解信息不包含实现Quartz组件任务的接口信息,则发出告警信息。
在一实施例中,执行的程序任务需要调用不同的接口进行操作,可以先确定注解信息中是否包含能实现Quartz组件任务的接口,若注解信息中不包含实现Quartz组件任务的接口信息,即说明任务无法执行,可以发送告警信息,说明该任务无法创建执行;若包含能实现Quartz组件任务的接口,即说明任务可以执行,从注解信息中读取对应的配置信息,在基于配置信息执行相应的程序任务。
参照图5,示出了本发明一实施例提供的数据化处理的操作流程图。
在一实施例中,在提取配置信息前,需要判断数据包是否已经被初始化,若被初始化,可能程序任务已经完成,可以退出执行程序任务。
为了避免重复操作,可选地,在所述从所述数据库存储的所述任务调用参数中提取执行程序的配置信息的步骤前,所述方法还包括以下步骤:
S21、判断所述数据库的数据表是否完成数据化处理。
具体地,所述数据化处理是判断数据库中是否存有Quartz的其中一张基础数据表,即确定该数据表是否已经存入数据库中。
S22、若确定所述数据表未完成数据化处理,则获取外部数据的数据源类型。
在一实施例中,若数据库中已经存有数据表,可以退出任务操作。若数据库中没有存有数据表,则可以获取外部数据的数据源类型。
具体地,数据源类型可以是获取数据接口(datasource)的参数。
S23、基于所述数据源类型查找用于连接外接数据库的交互组件,并利用所述交互组件的组件函数查找所述数据表对应数据库类型。
在本实施例中,可以基于数据接口(datasource)的参数获取数据库所连接的对象(connection,具体是用于连接到数据库和数据库进行交互的交互组件)。
然后基于这个交互组件的组件函数获取数据源元数据MetaData,然后调用数据源元数据MetaData的getDatabaseProductName函数获取查找得到对应的数据库类型DatabaseProductName。
在一可选的实施例中,所支持的数据库类型有cloudscape、cubrid、db2、derby_previous、derby、firebird、h2、hsqldb、informix、mysql、oracle、pointbase、postgres、sapdb、solid、sqlServer、sybase。
S24、获取所述数据库类型的脚本文件,并控制所述交互组件执行所述脚本文件,以所述交互组件的执行结果为所述数据表的初始化执行策略。
获取任务调度器代理类所有的脚本文件(sql文件),然后在所有脚本文件中匹配与对应的数据库类型DatabaseProductName对应的脚本文件;调用交互组件(Connection)执行上述对应的脚本文件,最后以交互组件的执行结果为数据表的初始化执行策略,并将数据表以及执行结果存储在数据库中。
S13、基于所述配置信息创建任务执行参数,并将所述任务执行参数注册至Quartz组件中,以供Quartz组件执行对应的程序任务。
在获取配置信息后,可以基于配置信息的内容创建执行任务所需的任务执行参数,最后将任务执行参数注册到Quartz组件中,使得Quartz组件可以执行对应的程序任务。
在其中一种的实施例中,所述任务执行参数包括任务执行触发器和任务执行调度信息。
在一实施例中,任务执行触发器对应为trigger和任务执行调度信息对应为jobdetail
可选地,步骤S13可以包括以下子步骤:
S131、从所述配置信息中提取任务动作参数,基于任务动作参数生成任务执行触发器,其中,所述任务动作参数包括任务表达式、固定频率、任务运行次数、任务延迟和任务名称。
S132、从所述配置信息中提取任务代码类信息,基于预设的调度创建函数与任务代码类信息生成任务执行调度信息。
具体地,任务执行调度信息的生成流程可以参照图2,任务执行触发器的生成流程可以参照图3,而图2和图3的具体操作说明可以参照前文论述,为了避免重复,在此不再赘述。
在一实施例中,所述程序启动指令包括原生环境的程序指令。
参照图6,示出了本发明一实施例提供的一种Quartz组件的调用方法的操作流程图一。
具体地,若接收的程序启动指令为原生环境的程序指令时,在程序启动后,可以调用Jobloader初始化方法判断Quartz组件的数据库是否初始化(具体的操作流程可以参照图5或者步骤S21-S24的操作流程),若没有初始化,则执行初始化,若已经执行初始化,则由Quartzconfigurater初始化Quartz组件的任务调度器(具体的参照流程可以是参照图4或步骤S1211-S1214的操作流程),接着扫描并遍历系统中带有用户预先标注的注解类信息,然后判断注解类信息中是否有实现任务的接口,若没有,则告警;若有,则从注解类信息中提取对应的配置信息,并创建任务执行触发器和任务执行调度信息,最后将任务执行触发器和任务执行调度信息注册到Quartz组件,执行对应的任务。
在一实施例中,所述程序启动指令包括Spring容器环境的程序指令
参照图7,示出了本发明一实施例提供的一种Quartz组件的调用方法的操作流程图二。
具体地,若接收的程序启动指令为Spring容器环境的程序指令时,在程序启动后,可以调用Spring框架进行初始化,然后调用Jobloader初始化方法判断Quartz组件的数据库是否初始化(具体的操作流程可以参照图5或者步骤S21-S24的操作流程),若没有初始化,则执行初始化,若已经执行初始化,则由Quartzconfigurater初始化Quartz组件的任务调度器(具体的参照流程可以是参照图4或步骤S1211-S1214的操作流程),接着扫描并遍历系统中带有用户预先标注的注解类信息,然后判断注解类信息中是否有实现任务的接口,若没有,则告警;若有,则从注解类信息中提取对应的配置信息,并创建任务执行触发器和任务执行调度信息,最后将任务执行触发器和任务执行调度信息注册到Quartz组件,执行对应的任务。
比较图6和图7可知,只需要用户引入了本发明组件,在系统初始化时根据环境的不同,给本发明的组件传入DataSource参数或者DataSource+ApplicationContext参数即可实现基础数据表以及Scheduler子组件的初始化,然后开发业务代码时使用QuartzJob标注并实现org.quartz.Job接口即可,省去了前文提到的Quartz使用步骤需要定义的复杂流程。
在本实施例中,本发明实施例提供了一种Quartz组件的调用方法,其有益效果在于:本发明可以预先将任务调度配置信息和任务触发器注册到Quartz组件的数据库中,当需要执行任务时,可以基于预先注册的信息,让Quartz组件中的各个子组件(如Scheduler、Trigger和JobDetail)进行自动初始化并提取信息,使得Quartz组件可以自动执行相应的程序任务处理,无需关于和管理Quartz组件的使用处理流程,实现任务的自动化处理,以提高操作的效率,而且整个过程无需调用第三方系统,也无需耦合各个组件的代码,可以进一步降低操作的难度并提升处理的工作效率,也可以降低资源的消耗。
本发明实施例还提供了一种Quartz组件的调用装置,参见图8,示出了本发明一实施例提供的一种Quartz组件的调用装置的结构示意图。
其中,作为示例的,所述Quartz组件的调用装置可以包括:
添加模块801,用于将预设的任务调用参数添加到Quartz组件的数据库中,其中,所述任务调用参数包括任务调度配置信息和任务触发器;
提取模块802,用于当获取程序启动指令时,从所述数据库存储的所述任务调用参数中提取执行程序的配置信息;
执行模块803,用于基于所述配置信息创建任务执行参数,并将所述任务执行参数注册至Quartz组件中,以供Quartz组件执行对应的程序任务。
可选地,所述添加模块还用于:
对所述Quartz组件进行初始化处理,得到初始化组件;
分别创建任务调度配置信息和任务触发器;
以所述创建任务调度配置信息和所述任务触发器为参数,注册到所述初始化组件的任务调度器中,并存储在所述初始化组件对应数据库的数据表中。
可选地,所述装置还包括:
判断模块,用于判断所述数据库的数据表是否完成数据化处理;
获取模块,用于若确定所述数据表未完成数据化处理,则获取外部数据的数据源类型;
查找模块,用于基于所述数据源类型查找用于连接外接数据库的交互组件,并利用所述交互组件的组件函数查找所述数据表对应数据库类型;
控制执行模块,用于获取所述数据库类型的脚本文件,并控制所述交互组件执行所述脚本文件,以所述交互组件的执行结果为所述数据表的初始化执行策略。
可选地,所述初始化处理,包括:
引入Quartz组件的基础文件;
对所述基础文件的QuartzJob注解进行定义,并纳入定时任务中。
可选地,所述提取模块还用于:
对所述Quartz组件的任务调度器进行调度处理,得到处理调度器;
从所述处理调度器中扫描并遍历带有QuartzJob注解的注解信息;
读取所述注解信息得到执行程序所需的配置信息。
可选地,所述提取模块还用于:
读取所述任务调度器在运行环境中预设的配置文件,并从所述配置文件中提取默认配置项信息;
利用所述默认配置项信息与外部数据对应的数据接口创建数据源连接接口;
采用所述数据源连接接口创建定时调度器;
使用所述默认配置项信息对所述定时调度器的函数进行初始化,得到处理调度器。
可选地,所述提取模块还用于:
判断所述注解信息中是否包含实现Quartz组件任务的接口信息;
若所述注解信息包含实现Quartz组件任务的接口信息,则读取所述注解信息,得到程序的配置信息;
若所述注解信息不包含实现Quartz组件任务的接口信息,则发出告警信息。
可选地,其中,所述任务执行参数包括任务执行触发器和任务执行调度信息;
所述执行模块还用于:
从所述配置信息中提取任务动作参数,基于任务动作参数生成任务执行触发器,其中,所述任务动作参数包括任务表达式、固定频率、任务运行次数、任务延迟和任务名称;
从所述配置信息中提取任务代码类信息,基于预设的调度创建函数与任务代码类信息生成任务执行调度信息。
可选地,所述程序启动指令包括Spring容器环境的程序指令和原生环境的程序指令。
所属技术领域的技术人员可以清楚地了解到,为方便的描述和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
进一步的,本申请实施例还提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例所述的Quartz组件的调用方法。
进一步的,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如上述实施例所述的Quartz组件的调用方法。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (9)
1.一种Quartz组件的调用方法,其特征在于,所述方法包括:
将预设的任务调用参数添加到Quartz组件的数据库中,其中,所述任务调用参数包括任务调度配置信息和任务触发器;
当获取程序启动指令时,从所述数据库存储的所述任务调用参数中提取执行程序的配置信息;
基于所述配置信息创建任务执行参数,并将所述任务执行参数注册至Quartz组件中,以供Quartz组件执行对应的程序任务;
所述从所述数据库存储的所述任务调用参数中提取执行程序的配置信息,包括:
对所述Quartz组件的任务调度器进行调度处理,得到处理调度器,其中,所述调度处理是Quartz组件中的子组件QuartzConfigurator的运行流程;
从所述处理调度器中扫描并遍历带有QuartzJob注解的注解信息;
读取所述注解信息得到执行程序所需的配置信息。
2.根据权利要求1所述的Quartz组件的调用方法,其特征在于,所述将预设的任务调用参数添加到Quartz组件的数据库中,包括:
对所述Quartz组件进行初始化处理,得到初始化组件;
分别创建任务调度配置信息和任务触发器;
以所述创建任务调度配置信息和所述任务触发器为参数,注册到所述初始化组件的任务调度器中,并存储在所述初始化组件对应数据库的数据表中。
3.根据权利要求2所述的Quartz组件的调用方法,其特征在于,在所述从所述数据库存储的所述任务调用参数中提取执行程序的配置信息的步骤前,所述方法还包括:
判断所述数据库的数据表是否完成数据化处理;
若确定所述数据表未完成数据化处理,则获取外部数据的数据源类型;
基于所述数据源类型查找用于连接外接数据库的交互组件,并利用所述交互组件的组件函数查找所述数据表对应数据库类型;
获取所述数据库类型的脚本文件,并控制所述交互组件执行所述脚本文件,以所述交互组件的执行结果为所述数据表的初始化执行策略。
4.根据权利要求2所述的Quartz组件的调用方法,其特征在于,所述初始化处理,包括:
引入Quartz组件的基础文件;
对所述基础文件的QuartzJob注解进行定义,并纳入定时任务中。
5.根据权利要求1所述的Quartz组件的调用方法,其特征在于,所述对所述Quartz组件的任务调度器进行调度处理,得到处理调度器,包括:
读取所述任务调度器在运行环境中预设的配置文件,并从所述配置文件中提取默认配置项信息;
利用所述默认配置项信息与外部数据对应的数据接口创建数据源连接接口;
采用所述数据源连接接口创建定时调度器;
使用所述默认配置项信息对所述定时调度器的函数进行初始化,得到处理调度器。
6.根据权利要求1所述的Quartz组件的调用方法,其特征在于,所述读取所述注解信息得到执行程序所需的配置信息,包括:
判断所述注解信息中是否包含实现Quartz组件任务的接口信息;
若所述注解信息包含实现Quartz组件任务的接口信息,则读取所述注解信息,得到程序的配置信息;
若所述注解信息不包含实现Quartz组件任务的接口信息,则发出告警信息。
7.根据权利要求1-6任一项所述的Quartz组件的调用方法,其特征在于,其中,所述任务执行参数包括任务执行触发器和任务执行调度信息;
所述基于所述配置信息创建任务执行参数,包括:
从所述配置信息中提取任务动作参数,基于任务动作参数生成任务执行触发器,其中,所述任务动作参数包括任务表达式、固定频率、任务运行次数、任务延迟和任务名称;
从所述配置信息中提取任务代码类信息,基于预设的调度创建函数与任务代码类信息生成任务执行调度信息。
8.根据权利要求1-6任一项所述的Quartz组件的调用方法,其特征在于,所述程序启动指令包括Spring容器环境的程序指令和原生环境的程序指令。
9.一种Quartz组件的调用装置,其特征在于,所述装置包括:
添加模块,用于将预设的任务调用参数添加到Quartz组件的数据库中,其中,所述任务调用参数包括任务调度配置信息和任务触发器;
提取模块,用于当获取程序启动指令时,从所述数据库存储的所述任务调用参数中提取执行程序的配置信息;
执行模块,用于基于所述配置信息创建任务执行参数,并将所述任务执行参数注册至Quartz组件中,以供Quartz组件执行对应的程序任务;
所述提取模块,还用于:
对所述Quartz组件的任务调度器进行调度处理,得到处理调度器,其中,所述调度处理是Quartz组件中的子组件QuartzConfigurator的运行流程;
从所述处理调度器中扫描并遍历带有QuartzJob注解的注解信息;
读取所述注解信息得到执行程序所需的配置信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210698023.9A CN115061797B (zh) | 2022-06-20 | 2022-06-20 | 一种Quartz组件的调用方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210698023.9A CN115061797B (zh) | 2022-06-20 | 2022-06-20 | 一种Quartz组件的调用方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115061797A CN115061797A (zh) | 2022-09-16 |
CN115061797B true CN115061797B (zh) | 2023-05-30 |
Family
ID=83202524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210698023.9A Active CN115061797B (zh) | 2022-06-20 | 2022-06-20 | 一种Quartz组件的调用方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115061797B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115878097B (zh) * | 2023-03-03 | 2023-05-16 | 智慧眼科技股份有限公司 | 一种创建定时任务的方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968401A (zh) * | 2018-09-28 | 2020-04-07 | 北京国双科技有限公司 | 基于Quartz的任务调度方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7769617B2 (en) * | 2002-10-29 | 2010-08-03 | Tokyo Electron Limited | Worker management system, worker management apparatus and worker management method |
CN101887381A (zh) * | 2010-06-22 | 2010-11-17 | 北京伟库电子商务科技有限公司 | 基于Quartz框架的配置定时任务的方法和装置 |
CN111078383A (zh) * | 2019-12-24 | 2020-04-28 | 浙江诺诺网络科技有限公司 | 一种定时任务的管理方法、装置、设备及存储介质 |
CN113742044A (zh) * | 2021-09-09 | 2021-12-03 | 平安科技(深圳)有限公司 | 定时任务管理方法、装置、设备及存储介质 |
CN113867911A (zh) * | 2021-09-26 | 2021-12-31 | 聚好看科技股份有限公司 | 一种任务调度方法、设备及微服务系统 |
CN114443246B (zh) * | 2021-12-28 | 2022-12-09 | 广州市玄武无线科技股份有限公司 | 智能调度方法、装置、设备及计算机可读存储介质 |
CN114637623A (zh) * | 2022-04-07 | 2022-06-17 | 中国工商银行股份有限公司 | 一种定时任务的处理方法及相关装置 |
-
2022
- 2022-06-20 CN CN202210698023.9A patent/CN115061797B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968401A (zh) * | 2018-09-28 | 2020-04-07 | 北京国双科技有限公司 | 基于Quartz的任务调度方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115061797A (zh) | 2022-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20070220494A1 (en) | A Method of Rapid Software Application Development for a Wireless Mobile Device | |
US8024721B2 (en) | System and method for implementing a safe framework | |
US20010047402A1 (en) | Method for developing web applications, development support system, and storage medium for storing programs developed according to the method | |
CN110912724A (zh) | 一种基于参数驱动的自动业务编排方法及装置 | |
CN106055368B (zh) | 应用更新方法和装置 | |
CN106155749B (zh) | 一种监控插件扩展方法及装置 | |
WO2020015191A1 (zh) | 业务规则的发布管理方法、电子装置及可读存储介质 | |
JP5396979B2 (ja) | ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム | |
CN111068328A (zh) | 游戏广告配置表格的生成方法、终端设备及介质 | |
CN115061797B (zh) | 一种Quartz组件的调用方法及装置 | |
CN113971110A (zh) | 接口测试方法、装置、设备与计算机可读存储介质 | |
CN111966357A (zh) | 一种操作系统应用编译方法、装置及电子设备 | |
US20080059949A1 (en) | System and method for implementing a safe framework | |
CN110888669B (zh) | 一种在ide上创建模板工程的方法及系统 | |
CN114721711B (zh) | 基于GraphQL减免软件研发配置的工具和方法 | |
CN115794214A (zh) | 应用模块元数据管理方法、设备、存储介质及装置 | |
CN111124386B (zh) | 基于Unity的动画事件处理方法、装置、设备和存储介质 | |
JP2010204840A (ja) | ユーザインターフェース操作統合システムのカスタマイズ方法及び端末装置並びにコンピュータプログラム及び情報記録媒体 | |
CN107765655B (zh) | 以消息路由系统扩展mes功能的方法、系统及可读介质 | |
CN111045943A (zh) | Mock数据的生成方法、测试系统及可读存储介质 | |
CN111078231A (zh) | 可视化界面组件热部署方法和客户端、服务端 | |
CN111399931B (zh) | 一种LayaAir引擎导出UI资源的方法及终端 | |
CN115495442A (zh) | 数据库操作文件生成方法、装置、设备及存储介质 | |
JP2004334464A (ja) | ユーザインタフェース対応プログラム生成装置、およびユーザインタフェース対応プログラム生成方法、並びにコンピュータ・プログラム | |
CN111177718A (zh) | 命令的执行方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |