原创:微信公众号哈喽大家好啊,我是Hydra 。码农参上
,欢迎分享,转载请保留出处 。
xxl-job是一款非常优秀的任务调度中间件,轻量级、使用简单、支持分布式等优点,让它广泛应用在我们的项目中,解决了不少定时任务的调度问题 。
我们都知道,在使用过程中需要先到xxl-job的任务调度中心页面上,配置执行器executor和具体的任务job,这一过程如果项目中的定时任务数量不多还好说,如果任务多了的话还是挺费工夫的 。
文章插图
假设项目中有上百个这样的定时任务,那么每个任务都需要走一遍绑定
jobHander
后端接口,填写cron
表达式这个流程…我就想问问,填多了谁能不迷糊?
于是出于功能优化(偷懒)这一动机,前几天我萌生了一个想法,有没有什么方法能够告别xxl-job的管理页面,能够让我不再需要到页面上去手动注册执行器和任务,实现让它们自动注册到调度中心呢 。
分析分析一下,其实我们要做的很简单,只要在项目启动时主动注册
executor
和各个jobHandler
到调度中心就可以了,流程如下:文章插图
有的小伙伴们可能要问了,我在页面上创建执行器的时候,不是有一个选项叫做自动注册吗,为什么我们这里还要自己添加新执行器?
其实这里有个误区,这里的自动注册指的是会根据项目中配置的
xxl.job.executor.appname
,将配置的机器地址自动注册到这个执行器的地址列表中 。但是如果你之前没有手动创建过执行器,那么是不会给你自动添加一个新执行器到调度中心的 。既然有了想法咱们就直接开干,先到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
的的登录页面:文章插图
其实想想也明白,出于安全性考虑,调度中心的接口也不可能允许裸调的 。那么再回头看一下刚才页面上的请求就会发现,它在
经验总结扩展阅读
- 牙龈炎怎么办
- 在爱情中容易彻底沦陷的星座
- 新版微信怎么彻底删除微信好友方法(微信如何迁移微信好友)
- 如何彻底的忘记前男友
- 车上有跳蚤怎么彻底消灭
- 电脑弹窗广告怎么彻底关闭
- 金喜善 金喜善怎么变成这样!最新亮相换新发型扮嫩,五官大变彻底认不出!
- 磁石面膜怎么清洗?
- 如何彻底清理微信缓存图片视频垃圾?
- 发型 中美这场较量,美国彻底完败!当着世界的面,崔天凯对美发出强音