一、简单介绍
作为一款轻量级的分布式任务调度平台,XXL-Job具备相对较为简单的操作,有简洁友好的管理端页面,以方便任务的创建及调度。对于简单的使用是相对容易上手的。不仅如此从官方开发手册上还描述了产品的如下特性:
1.注册中心:执行器会周期性的进行任务的自动注册
2.失败处理策略:周期性检测失败的任务并进行充实或者预警通知
3.一致性:调度中心会保证集群分布式调度的一致性,通过DB锁实现
然后这里也不做过多的内容介绍,一方面本人才疏学浅,一方面是本次仅仅对于相对比较基础的定时任务功能进行记录。
二、项目部署及使用
1.首先从git上拉取项目代码:
github:https://github.com/xuxueli/xxl-job
gitee:https://gitee.com/xuxueli0323/xxl-job
拉取后在doc文件夹下,可以看到项目的官方文档,以及项目运行所需要使用的数据库,在本地的数据库中运行相应的sql文件。
xxl-job-admin模块是整个项目的控制台,可以抽象的理解为类似于微服务架构中的注册中心。
xxl-job-executor-sample模块就是定时任务的执行器模块,相当于是服务提供者,所有的定时任务都是需要通过执行器执行的,因此我们在使用的时候就需要创建相应的任务执行器,然后需要将执行器注册到admin控制台中,才能进行后续的使用。
2.修改xxl-job-admin的配置文件application.properties,在该文件中修改程序连接的数据库参数
3.启动xxl-job-admin模块,启动成功后通过浏览器访问控制台页面http://localhost:8080/xxl-job-admin。进入登录页面,初始化的账户信息为:username:admin pwd:123456
执行器管理菜单:也就是我们需要创建对应的任务执行器来执行任务
任务管理:自定义任务,并配置任务执行的时机
4.编写任务执行器:
用我个人的理解就是,jobhandler分包下的每一个类,就是每一个不同的执行器,类中的每一个方法就是自定义的任务。
5.配置执行器和任务
可以选用自动注册的方式,如果是手动录入的话,这个地址就是你的xxl-job-executor-samples模块的application.properties文件中xxl.job.executor.ip 和xxl.job.executor.port对应的值
执行器配置完成后,需要创建一定义任务:
对一些关键的选项进行说明:
执行器:选择对应的执行器才能确保定时任务的正常执行,这里优先选择自定义的执行器
调度类型:选择CRON表达式,这个用来定义任务执行的周期,下文会对CRON表达式做具体说明
JobHandler:输入自定义定时任务中@XxlJob()注解中的值,输错将找不到指定任务
任务参数:就是执行任务时需要传递的参数,后台通过XxlJobHelper.getJobParam()接收参数值
路由策略:选择一致性HASH
阻塞处理策略:单机穿行
6.完成上述操作后,启动xxl-job-executor-samples模块,然后通过控制台执行任务,用来测试任务是否可以正常执行,这里还有一点,如果执行任务出现错误或者异常,从代码的程序台无法展现出太多的信息,需要通过管理端页面的任务日志中去查看详细的报错信息。
如果其他项目需要集成XXL-JOB的功能,需要在pom中添加关于XXLjob的相关依赖即可,xxl-job-core
然后再将xxl-job-executor-sample-springboot模块下的XxlJobConfig文件复制到自己的项目中,并修改相关配置即可。
三、关于CRON表达式
这里贴一个其他大神总结的内容: