探寻用户自定义定时任务的实践方案(2)

2023-05-03 来源:飞速影视
执行时间范围可控
完成一、二步的配置后,需要给用户提供一个任务执行的时间范围,在这个时间范围内才会执行任务。 简单的用户自定义定时任务的界面如下:

探寻用户自定义定时任务的实践方案


清楚了用户自定义定时任务的特点,定义任务模型 TaskScheduleDefine 为:

定时任务执行周期


定时任务从创建到执行可分为如下阶段:

探寻用户自定义定时任务的实践方案


创建:界面化的配置(如 XXL-Job),代码配置(如 Quartz,spring-schedule)。
加载:任务加载到应用缓存,可以在创建时进行,但实际上任务创建和加载任务是分开的,比如当任务被修改时,实际上是有一个更新的过程的,可以把这种更新叫做任务的重载。
调度:判断被加载的任务是否满足执行条件(如果支持分布式调度要决定那一台服务器去执行),如果满足,开始执行。
执行:开源框架都会完成上面的三个步骤(调度中心或应用本身),业务开发者只用关注业务逻辑部分,做到任务调度和业务执行解耦。
本文介绍的任务组件也是基于这个思想去实现用户自定义任务。

用户自定义任务设计


应用启动时,初始化任务加载线程和任务调度线程(类似于 XXL-Job 的 scheduleThread 和 ringThread)
//上传 加载,支持本地和数据库任务uploadAndLoadDefinition();//初始化调度, 调度由维护任务来处理,由调度任务来唤起相应的具体执行internalScheduledExecutor.scheduleAtFixedRate(new SpringTaskMonitor(), 10, 45, TimeUnit.SECONDS);//定义维护 internalScheduledExecutor.scheduleAtFixedRate(new SpringTaskDefinitionMonitor(), 1, 2, TimeUnit.MINUTES);
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号