支持动态管理定时任务的方法、系统、设备和存储介质技术方案

技术编号:18668041 阅读:42 留言:0更新日期:2018-08-14 20:35
本发明专利技术涉及一种支持动态管理定时任务的方法,该方法包括:通过反射机制获取注解;解析所述注解,获得注解信息;根据所述注解信息创建实例和设置实例的唯一标识;将所述实例和唯一标识存放在相应容器中。本发明专利技术还涉及一种支持动态管理定时任务的系统、电子设备和存储介质。

Method, system, device and storage medium supporting dynamic management of timed tasks

The present invention relates to a method for supporting dynamic management of timed tasks, which includes: obtaining annotations through reflection mechanism; parsing the annotations to obtain annotation information; creating instances and setting unique identifiers for instances based on the annotation information; and storing the instances and unique identifiers in corresponding containers. The invention also relates to a system, an electronic device and a storage medium supporting dynamic management of timed tasks.

【技术实现步骤摘要】
支持动态管理定时任务的方法、系统、设备和存储介质
本专利技术涉及计算机
,尤其涉及一种支持动态管理定时任务的方法、系统、设备和存储介质。
技术介绍
在企业软件中,有很多场景不需要人工介入,系统可自动完成,一般这种场景会通过定时任务解决。比如公司的报表系统会每天发出一份报表文件给公司的管理层查看公司运行情况,系统生成报表并发出这个动作,是不需要人工介入的,在某一个时刻,系统自动执行即可。这种自动执行的功能(定时任务)为worker,在大型的电商系统中,worker的数量会尤其多。针对定时任务的实现,现阶段有两种方案,其中一种为SPRING注解实现定时任务,另一种为配置文件实现定时任务。在软件的开发过程中,为减少开发成本,提高开发效率,通常会选择编写一个普通的POJO(简单的Java对象),然后在配置文件中通过反射创建worker的schedule、trigger、和job。随着worker数量的增加,配置文件中就会存在大量的schedule、trigger、job等配置信息。虽然开源框架SPRING提供了注解实现定时任务的功能,但是它没有对外暴露schedule、trigger、job等实例的实例ID,这就导致worker管理人员不能在系统运行过程中对worker执行schedule的start、stop或者对trigger触发等动态管理功能。SPRING注解实现定时任务是通过在系统启动时解析注解的属性创建定时任务,在系统启动完成后自动启动任务。但该技术方案存在以下问题:worker管理人员不能手动开启/关闭worker;不能在系统运行过程中对worker执行start、stop、对trigger触发一次等动态管理功能。配置文件实现定时任务是通过在系统启动时解析配置文件中配置的属性创建定时任务,可以通过配置的实例ID,对定时任务进行管理。该技术方案存在的问题是:配置定时任务的工作量会随着定时任务数量的增多成线性增长,进而会导致开发效率低,后期维护成本高。
技术实现思路
有鉴于此,本专利技术提供一种支持动态管理定时任务的方法、系统、设备和存储介质,能够通过零配置就可实现对定时任务在运行的时动态管理,并且还能够减少开发成本,提高开发效率,进而解决现阶段不能在系统运行过程中对worker执行start、stop、对trigger触发一次等动态管理,以及开发效率低,后期维护成本高的问题。为实现上述目的,根据本专利技术的一个方面,提供了一种支持动态管理定时任务的方法。本专利技术的方法包括:通过反射机制获取注解;解析所述注解,获得注解信息;根据所述注解信息创建实例和设置实例的唯一标识;将所述实例和唯一标识存放在相应容器中。可选地,本专利技术的方法还包括:将实例ID封装在注解中,进而将所述实例ID设置为实例的唯一标识。可选地,所述实例ID包括schedule实例ID、trigger实例ID、job实例ID,进而分别将schedule实例ID、trigger实例ID、job实例ID设置为schedule实例、trigger实例和job实例的唯一标识。可选地,根据所述注解信息创建实例和设置实例的唯一标识包括:根据所述注解信息创建job实例,并且设置所述job实例的唯一标识;根据所述注解信息和所述job实例,创建trigger实例,并且设置所述trigger实例的唯一标识;根据所述注解信息和所述trigger实例,创建schedule实例,并且设置所述schedule实例的唯一标识。可选地,本专利技术的方法还包括:创建job实例容器、trigger实例容器和schedule实例容器;将所述job实例和job实例的唯一标识存放在job实例容器中;将所述trigger实例和trigger实例的唯一标识存放在trigger实例容器中;将schedule实例和schedule实例的唯一标识存放在schedule实例容器。根据本专利技术的另一方面,提供了一种支持动态管理定时任务的系统。本专利技术的系统包括:获取模块,用于通过反射机制获取注解;解析模块,用于解析所述注解,获得注解信息;创建模块,用于根据所述注解信息创建实例和设置实例的唯一标识;存放模块,用于将所述实例和唯一标识存放在相应容器中。可选地,本专利技术的系统还包括封装模块,用于将将实例ID封装在注解中,进而创建模块将所述实例ID设置为实例的唯一标识。可选地,所述实例ID包括schedule实例ID、trigger实例ID、job实例ID,进而创建模块分别将schedule实例ID、trigger实例ID、job实例ID设置为schedule实例、trigger实例和job实例的唯一标识。可选地,创建模块包括:创建job实例单元,用于根据所述注解信息创建job实例,并且设置所述job实例的唯一标识;创建trigger实例单元,根据所述注解信息和所述job实例,创建trigger实例,并且设置所述trigger实例的唯一标识;创建schedule实例单元,用于根据所述注解信息和所述trigger实例,创建schedule实例,并且设置所述schedule实例的唯一标识。可选地,所述创建模块还用于创建job实例容器、trigger实例容器和schedule实例容器;进而存放模块将所述job实例和job实例的唯一标识存放在job实例容器中;以及将所述trigger实例和trigger实例的唯一标识存放在trigger实例容器中;以及将schedule实例和schedule实例的唯一标识存放在schedule实例容器。根据本专利技术的另一方面,提供了一种支持动态管理定时任务的电子设备。本专利技术的电子设备包括至少一个处理器;以及与所述至少一个处理器通讯连接的存储器;其中,所述存储器存储被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述支持动态管理定时任务的方法中的任一项方法。根据本专利技术的另一方面,提供了一种支持动态管理定时任务的非暂态计算机可读存储介质。本专利技术的非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行上述支持动态管理定时任务的方法中的任一项方法。根据本专利技术的技术方案,通过在运行时解析注解,获得注解信息,并且根据注解信息创建实例时,设置实例的唯一标识,将实例和其唯一标识都存放在相应容器中。进而,在系统运行过程中,当需要对schedule执行start、stop和对trigger触发一次操作时,分别在schedule容器、Trigger容器、Job容器中通过schedule实例的唯一标识、trigger实例的唯一标识、job实例的唯一标识查询出具体的schedule实例、trigger实例、job实例执行相应的动态管理操作即可,即支持在运行时动态管理定时任务。上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:图1是根据本专利技术实施例的一种支持动态管理定时任务的方法主要步骤的示意图;图2是根据本专利技术实施例的创建job实例的示意图;图3是根据本专利技术实施例的创建trigger实例的示意图;图4是根据本专利技术实施例的创建schedule实例的示意图;图5是根本文档来自技高网
...

【技术保护点】
1.一种支持动态管理定时任务的方法,其特征在于,包括:通过反射机制获取注解;解析所述注解,获得注解信息;根据所述注解信息创建实例和设置实例的唯一标识;将所述实例和唯一标识存放在相应容器中。

【技术特征摘要】
1.一种支持动态管理定时任务的方法,其特征在于,包括:通过反射机制获取注解;解析所述注解,获得注解信息;根据所述注解信息创建实例和设置实例的唯一标识;将所述实例和唯一标识存放在相应容器中。2.根据权利要求1所述的方法,其特征在于,还包括:将实例ID封装在注解中,进而将所述实例ID设置为实例的唯一标识。3.根据权利要求2所述的方法,其特征在于,所述实例ID包括schedule实例ID、trigger实例ID、job实例ID,进而分别将schedule实例ID、trigger实例ID、job实例ID设置为schedule实例、trigger实例和job实例的唯一标识。4.根据权利要求1所述的方法,其特征在于,根据所述注解信息创建实例和设置实例的唯一标识包括:根据所述注解信息创建job实例,并且设置所述job实例的唯一标识;根据所述注解信息和所述job实例,创建trigger实例,并且设置所述trigger实例的唯一标识;根据所述注解信息和所述trigger实例,创建schedule实例,并且设置所述schedule实例的唯一标识。5.根据权利要求4所述的方法,其特征在于,还包括:创建job实例容器、trigger实例容器和schedule实例容器;将所述job实例和job实例的唯一标识存放在job实例容器中;将所述trigger实例和trigger实例的唯一标识存放在trigger实例容器中;将schedule实例和schedule实例的唯一标识存放在schedule实例容器。6.一种支持动态管理定时任务的系统,其特征在于,包括:获取模块,用于通过反射机制获取注解;解析模块,用于解析所述注解,获得注解信息;创建模块,用于根据所述注解信息创建实例和设置实例的唯一标识;存放模块,用于将所述实例和唯一标识存放在相应容器中。7.根据权利要求6所述的系统,其特征在于,...

【专利技术属性】
技术研发人员:李秀海丁琼周宁
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

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

1