转自:Java艺术 作者: wujiuye
XXL-JOB
是一个代码开源的分布式定时任务调度平台。
XXL-JOB
支持多种模式执行定时任务,如直接执行任务脚本代码、通过
commandJobHandler
调用任务接口、使用
@XxlJob
注解注册
JobHandler
。
我们旧的定时任务项目是通过提供接口由
XXL-JOB
定时调用
commandJobHandler
,再由
commandJobHandler
执行
shell
命令调用接口完成,虽然不是直接调用接口,但也可以说接口就是定时任务。 这种方式有利也有弊。团队成员可能在编写接口时,疏忽了接口执行耗时带来的影响,如因项目设置
http
超时导致
XXL-JOB
认为任务执行失败,或是每个接口都需要手动将任务放入线程池异步执行,意味着任务执行成功或是失败
XXL-JOB
将无法得知,放入自定义的线程池执行日记无法被
XXL-JOB
收集。我们也想将一些耗时、耗内存的任务实现分片执行,让定时任务项目能够支持横向扩展。 为解决这些问题,我们考虑将定时任务项目重构,并由原来的
SSM
框架切换到
Spring Boot
框架。但由于旧项目已有七八十个定时任务,全部迁移到新的框架上不现实,因此我们也放弃替换其它分布式定时任务调度框架的想法,转而想通过基于
XXL-JOB
进行二次开发,解决我们在定时任务上遇到的一些问题。
xxl-job-onion
XXL-JOB-Onion now means XXL-JOB eXtensions. :)
XXL-JOB-Onion
是基于
XXL-JOB
的二次开发,加入一些定制化功能。