【技术实现步骤摘要】
定时任务的管理方法、装置、设备和存储介质
[0001]本申请涉及定时任务
,尤其涉及一种定时任务的管理方法、装置、设备和存储介质。
技术介绍
[0002]目前,较广为人知的支撑分布式的定时任务技术为Quartz框架,是由java实现的一种开源的根据日程管理的定时任务系统。此外,还有Spring内置的定时任务调度功能@Scheduled,结合@EnableSchedulerLock实现分布式的定时任务功能。但以上技术主要关注于定时任务的本身,缺少了针对定时任务的启动、暂停等诸如此类的调度。
[0003]相关技术中,通过结合数据库存储、基于数据结构服务器(Redis)的分布式锁、前端可视化和消息队列(Message Queue,简称MQ)等技术进行了定时任务处理的改进,可以做到随时控制调度定时任务的执行、暂停、重设周期、分布式运行、集群运行和前端页面操控等调度方面的功能,但全新或修改过的定时任务代码无法动态“编入”到正在运行中的生产系统中。
技术实现思路
[0004]本申请提供一种定时任务的管理方法 ...
【技术保护点】
【技术特征摘要】
1.一种定时任务的管理方法,其特征在于,包括:获取待发布定时任务的代码,所述代码可通过在线编码、Java文件上传和压缩包上传中的任一种方式在前端可视化页面上传;对所述代码和所述代码对应的工具包进行编译,得到字节码,并将所述字节码缓存至缓存映射表中;依次调用类发现函数和类加载函数,所述类发现函数用于根据所述缓存映射表中的字节码生成所述代码对应的类文件,所述类加载函数用于将所述类文件动态加载到Java虚拟机的方法区;通过反射,对所述类文件进行实例化,生成任务实体,并对所述任务实体进行依赖对象注入赋值;将赋值后的任务实体动态发布到任务对象工厂。2.根据权利要求1所述的管理方法,其特征在于,所述对所述任务实体进行依赖对象注入赋值,包括:定位所述任务实体中@Autowired注解或@Resource注解的域;通过applicationContext.getBean()和所述域的Field.set()对所述任务实体进行依赖对象注入赋值。3.根据权利要求1所述的管理方法,其特征在于,所述对所述代码和所述代码对应的工具包进行编译,得到字节码,包括:从全球广域网应用的安全目录或lib路径遍历所述代码依赖的工具包;将所述工具包作为参数传入,调用javaCompiler对所述代码进行编译,得到所述字节码。4.根据权利要求1所述的管理方法,其特征在于,所述将赋值后的任务实体动态发布到任务对象工厂,包括:确定所述任务对象工厂中是否存在所述任务实体,若不存在,则将所述赋值后的任务实体注册至所述任务对象工厂;若存在,则将所述任务对象工厂中已存在的任务实体替换为所述赋值后的任务实体。5.根据权利要求1至4中任一项所述的管理方法,其特征在于,还包括:在将赋值后的任务实体动态发布到任务对象工厂后,将所述任务实体的名称属性与所述代码持久化记录到数据库。6.根据权利要求5所述的管理方法,其特征在于,所述将所述任务实体的名称属性与所述代码持久化记录到数据库,包括:确定所述数据库中是否存在所述名称属性;若存在,则将所述数据库中所述名称属性对应的原定时任务记录转移到job_compile_h...
【专利技术属性】
技术研发人员:庄梓源,
申请(专利权)人:中国联合网络通信集团有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。