原创:微信公众号哈喽大家好啊,我是Hydra 。码农参上
, 欢迎分享 , 转载请保留出处 。
xxl-job是一款非常优秀的任务调度中间件,轻量级、使用简单、支持分布式等优点,让它广泛应用在我们的项目中,解决了不少定时任务的调度问题 。
我们都知道,在使用过程中需要先到xxl-job的任务调度中心页面上,配置执行器executor和具体的任务job,这一过程如果项目中的定时任务数量不多还好说,如果任务多了的话还是挺费工夫的 。
文章插图
假设项目中有上百个这样的定时任务,那么每个任务都需要走一遍绑定
jobHander
后端接口,填写cron
表达式这个流程…我就想问问,填多了谁能不迷糊?
于是出于功能优化(偷懒)这一动机,前几天我萌生了一个想法,有没有什么方法能够告别xxl-job的管理页面,能够让我不再需要到页面上去手动注册执行器和任务,实现让它们自动注册到调度中心呢 。
分析分析一下,其实我们要做的很简单,只要在项目启动时主动注册
executor
和各个jobHandler
到调度中心就可以了,流程如下:文章插图
有的小伙伴们可能要问了,我在页面上创建执行器的时候,不是有一个选项叫做自动注册吗 , 为什么我们这里还要自己添加新执行器?
其实这里有个误区,这里的自动注册指的是会根据项目中配置的
xxl.job.executor.appname
, 将配置的机器地址自动注册到这个执行器的地址列表中 。但是如果你之前没有手动创建过执行器,那么是不会给你自动添加一个新执行器到调度中心的 。【魔改xxl-job,彻底告别手动配置任务!】既然有了想法咱们就直接开干,先到github上拉一份xxl-job的源码下来:
https://github.com/xuxueli/xxl-job/https://github.com/xuxueli/xxl-job/整个项目导入idea后,先看一下结构:
文章插图
结合着文档和代码,先梳理一下各个模块都是干什么的:
xxl-job-admin
:任务调度中心,启动后就可以访问管理页面,进行执行器和任务的注册、以及任务调用等功能了xxl-job-core
:公共依赖,项目中使用到xxl-job时要引入的依赖包xxl-job-executor-samples
:执行示例,分别包含了springboot版本和不使用框架的版本
executor
和jobHandler
调用的是哪些接口,我们先从页面上去抓一个请求看看:文章插图
好了,这样就能定位到
xxl-job-admin
模块中/jobgroup/save
这个接口 , 接下来可以很容易地找到源码位置:文章插图
按照这个思路,可以找到下面这几个关键接口:
/jobgroup/pageList
:执行器列表的条件查询/jobgroup/save
:添加执行器/jobinfo/pageList
:任务列表的条件查询/jobinfo/add
:添加任务
xxl-job-admin
的的登录页面:文章插图
其实想想也明白,出于安全性考虑,调度中心的接口也不可能允许裸调的 。那么再回头看一下刚才页面上的请求就会发现,它在
Headers
中添加了一条名为XXL_JOB_LOGIN_IDENTITY
的cookie
:文章插图
至于这条
cookie
, 则是在通过用户名和密码调用调度中心的/login
接口时返回的,在返回的response
可以直接拿到 。只要保存下来 , 并在之后每次请求时携带,就能够正常访问其他接口了 。到这里,我们需要的5个接口就基本准备齐了,接下来准备开始正式的改造工作 。
改造我们改造的目的是实现一个
starter
,以后只要引入这个starter
就能实现executor
和jobHandler
的自动注册,要引入的关键依赖有下面两个:<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.3.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency>
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 新版微信怎么彻底删除微信好友方法(微信如何迁移微信好友)
- 发现家里有老鼠怎么办 家里有老鼠怎么能彻底消灭
- 如何彻底删除微信红包记录 如何彻底删除微信红包记录?
- 小龙虾第二顿怎么热
- 房子顶楼渗水的情况能彻底解决吗?
- 手机照片视频如何彻底删除 手机中的照片如何彻底删除干净
- 《情满四合院》结局虽然美好,延伸一步想,坏心眼儿大半辈子的许大茂真能彻底改好吗?
- 痛改前非的经典语录 痛改前非
- 彻底删除的邮件怎么恢复 删除的邮件怎么恢复
- 怎么去除蟑螂最有效彻底 怎么去除蟑螂?