探寻用户自定义定时任务的实践方案
2023-05-03 来源:飞速影视
https://pics3.baidu.com/feed/8694a4c27d1ed21b418908567ced7dcc50da3f48.jpeg@f_auto?token=f9fe966149260a2faad34f0049ca2eb9{}
导读
工作中会遇到一些由用户自定义定时任务的业务场景,常用的开源框架(如 XXL-Job、Quartz)设计的初衷是给开发人员使用,并不适合开放给用户创建大量的自定义任务。本文借鉴开源框架定时任务作业的思想,结合 j.u.c 的 ScheduledExecutor,提供一种定时任务的实现方法,以解决用户自定义定时任务场景的问题。希望对大家有所帮助。
作者:杨凯 | 网易智企资深开发工程师
用户自定义定时任务
谈到定时任务的实现,我们优先想到的是引入优秀的开源框架方案去解决,常见的开源产品上文也提到过,如Quartz、XXL-Job、ElasticJob 等,但是开源框架应用到用户自定义任务上,存在以下需要问题或不足:
开源框架从任务创建到执行有一套标准方案,用户自定义任务在何时,何地插入符合开源框架标准任务并能控制生效、停止是一个需要考虑的复杂问题。
开源框架(如 XXL-Job)对任务的管理和业务容器是解耦的,如果用户要完成任务的创建、修改需要业务服务反向调用操作任务中心,这不符合任务中心设计原则。
开源框架设计的初衷是给程序开发者创建和控制任务。一般情况下,任务执行的策略、目的都比较明确,不像用户自定义任务存在频繁修改和相同业务背景多个任务定义使用同一个处理逻辑。
开源框架未提供用户友好的任务配置界面。
设计用户自定义任务组件除了要考虑上面的问题,还需要站在用户角度思考用户自定义任务的特点:
开始和结束可控
用户自定义定时任务业务依赖性强,可以多次创建和更新任务,但不会执行,也会在任务执行期间人为停止。所以任务组件要将业务任务创建和作业任务的创建区分,只创建、加载用户确定执行的任务。
执行策略和执行时间对用户友好
程序开发者创建定时任务,执行策略(单个任务循环、单次)和执行时间是由配置的 Cron 表达式确定,但是 Cron 表达式对用户不友好,容易配置出错。用户自定义定时任务在设置定时策略和执行时间时,需要提供用户友好的配置界面,任务组件内部转换成对应的 Cron 表达式。
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号