基于Quartz实现动态配置定时任务的方法及装置制造方法及图纸

技术编号:39004782 阅读:17 留言:0更新日期:2023-10-07 10:36
本申请提供了一种基于Quartz实现动态配置定时任务的方法及装置,所述方法包括:获取在先定义好的定时任务信息;其中,所述定时任务信息包括定时任务配置表、以及执行历史表;利用Spring解析定时任务信息,获取所述定时任务配置表中的所有生效配置,并通过API动态创建相应的定时任务;执行定时任务,判断定时任务的任务状态和执行时间是否符合预设要求,并将执行的定时任务进行日志记录。本申请所述的基于Quartz实现动态配置定时任务的方法及装置在修改定时任务执行频率、生效状态等基础属性后,不用重新启动系统即可立即生效,提高系统稳定性。统稳定性。统稳定性。

【技术实现步骤摘要】
基于Quartz实现动态配置定时任务的方法及装置


[0001]本申请属于定时任务配置
,尤其涉及一种基于Quartz实现动态配置定时任务的方法及装置。

技术介绍

[0002]在应用系统开发的过程中,经常会有需要定时执行某些业务逻辑的场景,而使用Quartz框架来作为分布式定时任务执行框架无疑是一个很好的选择。Quartz是一个完全由java编写的开源作业调度框架,该框架的核心是调度器。使用者仅需引入相关的Maven依赖,创建好Quartz所需要的数据库表结构,然后通过代码编写相应的Job任务,并显式设置触发频率,在系统启动之后Quartz框架会将代码中编写的配置等写入Quartz专属的数据表中。但Quartz框架也有一定的不足,如没有可视化界面查看任务执行状态、没有提供执行日志查询、无法动态调节定时任务的执行频率等,无法满足业务系统需求变化的多样性。

技术实现思路

[0003]有鉴于此,本申请旨在提出一种基于Quartz实现动态配置定时任务的方法及装置,以解决Quartz框架进行定时任务执行时,无法满足业务系统需求变化的问题。
[0004]为达到上述目的,本申请的技术方案是这样实现的:
[0005]第一方面,本申请提供了一种基于Quartz实现动态配置定时任务的方法,所述方法包括:
[0006]获取在先定义好的定时任务信息;其中,所述定时任务信息包括定时任务配置表、以及执行历史表;
[0007]利用Spring解析定时任务信息,获取所述定时任务配置表中的所有生效配置,并通过API动态创建相应的定时任务;
[0008]执行定时任务,判断定时任务的任务状态和执行时间是否符合预设要求,并将执行的定时任务进行日志记录。
[0009]进一步地,所述定时任务配置表至少包括任务ID、任务描述、任务状态、任务BeanID、任务ClassName、任务执行Corn表达式;
[0010]所述执行历史表包括任务ID,执行时间,执行状态,耗时,详细日志。
[0011]进一步地,在所述获取在先定义好的定时任务信息之前,包括:
[0012]利用@Scheduled注解定义定时任务,并通过Cron表达式指定任务的执行时间规则。
[0013]进一步地,所述利用Spring解析定时任务信息,读取所述定时任务配置表中的所有生效配置,并通过API动态创建相应的定时任务,包括:
[0014]通过在任务执行类中定义@Scheduled注解的方式,以使Spring自动解析定时任务信息,读取所述定时任务配置表中的所有生效配置;
[0015]通过Quartz框架提供的JobDetail和Trigger类动态创建定时任务。
[0016]进一步地,所述执行定时任务,判断定时任务的任务状态和执行时间是否符合预设要求,并将执行的定时任务进行日志记录,包括:
[0017]执行定时任务时,获取所述任务执行Corn表达式,并通过CronTrigger来计算下一次任务执行的时间;
[0018]判断下一次任务执行时间与当前时间的时间差值,将所述差值与预设的时间差值作比较;
[0019]响应于所述时间差值小于所述预设的时间差值,则允许任务执行;否则,跳过执行,并记录日志。
[0020]进一步地,还包括:将定时任务信息、执行日志查看、编辑、暂停、启用/禁用、单次任务执行操作,通过前端界面进行可视化展示。
[0021]第二方面,基于同一专利技术构思,本申请还提供了基于Quartz实现动态配置定时任务的装置,所述装置包括:
[0022]定时任务信息获取模块,被配置为获取在先定义好的定时任务信息;其中,所述定时任务信息包括定时任务配置表、以及执行历史表;
[0023]定时任务创建模块,被配置为利用Spring解析定时任务信息,获取所述定时任务配置表中的所有生效配置,并通过API动态创建相应的定时任务;
[0024]定时任务执行模块,被配置为执行定时任务,判断定时任务的任务状态和执行时间是否符合预设要求,并将执行的定时任务进行日志记录。
[0025]进一步地,还包括:可视化模块,被配置为将定时任务信息、执行日志查看、编辑、暂停、启用/禁用、单次任务执行操作,通过前端界面进行可视化展示。
[0026]第三方面,基于同一专利技术构思,本申请还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的基于Quartz实现动态配置定时任务的方法。
[0027]第四方面,基于同一专利技术构思,本申请还提供了一种非暂态计算机可读存储介质,其中,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如第一方面所述的基于Quartz实现动态配置定时任务的方法。
[0028]相对于现有技术,本申请所述的基于Quartz实现动态配置定时任务的方法及装置具有以下有益效果:
[0029]本申请所述的基于Quartz实现动态配置定时任务的方法及装置,所述方法通过获取在先定义好的定时任务信息;其中,定时任务信息包括定时任务配置表、以及执行历史表;利用Spring解析定时任务信息,获取定时任务配置表中的所有生效配置,并通过API动态创建相应的定时任务;执行定时任务,判断定时任务的任务状态和执行时间是否符合预设要求,并将执行的定时任务进行日志记录;本申请在修改定时任务执行频率、生效状态等基础属性后,不用重新启动系统即可立即生效,提高系统稳定性;同时,可以查看任务执行结果、过程日志等信息、及时发现系统问题。
附图说明
[0030]构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0031]图1为本申请实施例所述的基于Quartz实现动态配置定时任务的方法流程图;
[0032]图2为本申请实施例所述的基于Quartz实现动态配置定时任务的装置的结构示意图;
[0033]图3为本申请实施例所述的电子设备的结构示意图。
具体实施方式
[0034]为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
[0035]需要说明的是,除非另外定义,本申请实施例使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Quartz实现动态配置定时任务的方法,其特征在于,所述方法包括:获取在先定义好的定时任务信息;其中,所述定时任务信息包括定时任务配置表、以及执行历史表;利用Spring解析定时任务信息,获取所述定时任务配置表中的所有生效配置,并通过API动态创建相应的定时任务;执行定时任务,判断定时任务的任务状态和执行时间是否符合预设要求,并将执行的定时任务进行日志记录。2.根据权利要求1所述的基于Quartz实现动态配置定时任务的方法,其特征在于:所述定时任务配置表至少包括任务ID、任务描述、任务状态、任务BeanID、任务ClassName、任务执行Corn表达式;所述执行历史表包括任务ID,执行时间,执行状态,耗时,详细日志。3.根据权利要求1所述的基于Quartz实现动态配置定时任务的方法,其特征在于,在所述获取在先定义好的定时任务信息之前,包括:利用@Scheduled注解定义定时任务,并通过Cron表达式指定任务的执行时间规则。4.根据权利要求3所述的基于Quartz实现动态配置定时任务的方法,其特征在于,所述利用Spring解析定时任务信息,读取所述定时任务配置表中的所有生效配置,并通过API动态创建相应的定时任务,包括:通过在任务执行类中定义@Scheduled注解的方式,以使Spring自动解析定时任务信息,读取所述定时任务配置表中的所有生效配置;通过Quartz框架提供的JobDetail和Trigger类动态创建定时任务。5.根据权利要求4所述的基于Quartz实现动态配置定时任务的方法,其特征在于,所述执行定时任务,判断定时任务的任务状态和执行时间是否符合预设要求,并将执行的定时任务进行日志记录,包括:执行定时任务时,获取所述任务执行Corn表达式,并通过CronTrigger...

【专利技术属性】
技术研发人员:邹虎
申请(专利权)人:紫光云技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1