一、什么是任务调度平台
任务调度是基于给定的时间点 给定的时间间隔又或者给定执行次数自动的执行任务。
二、为什么要用任务调度平台
很多业务场景我们需要某个特定的时刻去做某件任务。
三、任务调度框架选型
xxl-job 轻量级分布式任务调度平台
Elastic-job 当当开源的分布式调度解决方案
Saturn 唯品会开源的分布式任务调度平台
light-task-scheduler 阿里员工开源的个人项目
Quartz java定时任务的标配
四、XXL-JOB入门
官方中文文档:http://www.xuxueli.com/xxl-job/
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>${最新稳定版本}</version>
</dependency>
xxl-job-admin:调度中心
xxl-job-core:公共依赖
xxl-job-executor-samples:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器)
:xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器,推荐这种方式;
:xxl-job-executor-sample-spring:Spring版本,通过Spring容器管理执行器,比较通用;
:xxl-job-executor-sample-frameless:无框架版本;
:xxl-job-executor-sample-jfinal:JFinal版本,通过JFinal管理执行器;
:xxl-job-executor-sample-nutz:Nutz版本,通过Nutz管理执行器;
:xxl-job-executor-sample-jboot:jboot版本,通过jboot管理执行器;
下载后修改数据库密码后启动 admin服务
http://localhost:8080/xxl-job-admin/jobinfo
编辑我的定时任务
这样你的第一个定时任务就创建好啦。
定时任务是可以设置多长时间执行一次。
意思就是每隔多长时间会调用你的hanlder
常用的运行模式是bean
所以会调用到我们的这个实例
/**
* 1、简单任务示例(Bean模式)
*/
@XxlJob("demoJobHandler")
public void demoJobHandler() throws Exception {
XxlJobHelper.log("XXL-JOB, Hello World.");
for (int i = 0; i < 5; i++) {
XxlJobHelper.log("beat at:" + i);
TimeUnit.SECONDS.sleep(2);
}
// default success
}
在这个里面开发你的业务逻辑代码即可。
定时任务调度的结果也可以在你的xxl-job上查看这次调度是成功还是失败!
怎么样?
有没有感觉调度还是比较简单的。
我们现在正在开发的项目就有大量的用到这个调度任务。
还是值得学习的!