xxl-job配置及使用

2年前 (2022) 程序员胖胖胖虎阿
241 0 0

1、下载xxl_job

源码仓库地址

源码仓库地址

Release Download

https://github.com/xuxueli/xxl-job

Download

xxl-job: 一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

Download

中央仓库地址

  1. <!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
  2. <dependency>
  3.     <groupId>com.xuxueli</groupId>
  4.     <artifactId>xxl-job-core</artifactId>
  5.     <version>${最新稳定版本}</version>
  6. </dependency>
  1. 环境
  • Maven3+
  • Jdk1.8+
  • Mysql5.7+
  1. 快速入门

3.1、下载解压包:

xxl-job配置及使用

“调度数据库初始化SQL脚本” 位置为:

/xxl-job/doc/db/tables_xxl_job.sql

调度中心支持集群部署,集群情况下各节点务必连接同一个mysql实例;

如果mysql做主从,调度中心集群节点务必强制走主库;

3.2、编译源码

解压源码,按照maven格式将源码导入IDE, 使用maven进行编译即可,源码结构如下:

  1. xxl-job-admin:调度中心
  2. xxl-job-core:公共依赖
  3. xxl-job-executor-samples:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器)
  4. xxl-job-executor-sample-springbootSpringboot版本,通过Springboot管理执行器,推荐这种方式;
  5. xxl-job-executor-sample-springSpring版本,通过Spring容器管理执行器,比较通用;
  6. xxl-job-executor-sample-frameless:无框架版本;

或者使用如下方式进行编译打包

xxl-job配置及使用

3.3、 配置部署“调度中心”

  1. 调度中心项目:xxl-job-admin
  2. 作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。
  3. 调度中心登录

登录账户: admin/123456

xxl-job配置及使用

打开执行器管理。

xxl-job配置及使用

点击创建:

xxl-job配置及使用

AppName需要与xxl-jo-admin控制台配置文件中的

### xxl-job executor appname
xxl.job.executor.appname=xxl-job-executor-sample

相同

5、任务管理

xxl-job配置及使用

BEAN模式

方式一、(类形式)

  1. 创建TestJobHandler,然后手动注册执行器XxlJobExecutor.registJobHandler("testJobHandler", new TestJobHandler());

xxl-job配置及使用 然后在控制台任务新增界面中的JobHandler填入注册好的名字

xxl-job配置及使用

方式二、(方法形式)

Bean模式任务,支持基于方法的开发方式,每个任务对应一个方法。

  • 优点:
    • 每个任务只需要开发一个方法,并添加”@XxlJob”注解即可,更加方便、快速。
    • 支持自动扫描任务并注入到执行器容器。
  • 缺点:要求Spring容器环境;

步骤一:执行器项目中,开发Job方法:

1、任务开发:在Spring Bean实例中,开发Job方法;

2、注解配置:为Job方法添加注解 "@XxlJob(value="自定义jobhandler名称", init = "JobHandler初始化方法", destroy = "JobHandler销毁方法")",注解value值对应的是调度中心新建任务的JobHandler属性的值。

3、执行日志:需要通过 "XxlJobHelper.log" 打印执行日志;

4、任务结果:默认任务结果为 "成功" 状态,不需要主动设置;如有诉求,比如设置任务结果为失败,可以通过 "XxlJobHelper.handleFail/handleSuccess" 自主设置任务结果;

如图:

xxl-job配置及使用

步骤二:调度中心,新建调度任务

参考上文“配置属性详细说明”对新建的任务进行参数配置,运行模式选中 “BEAN模式”,JobHandler属性填写任务注解“@XxlJob”中定义的值;

xxl-job配置及使用

点击启动

xxl-job配置及使用 再点击执行一次

xxl-job配置及使用

任务开始执行

  1. L

GLUE模式(Java)

任务以源码方式维护在调度中心,支持通过Web IDE在线更新,实时编译和生效,因此不需要指定JobHandler。开发流程如下:

步骤一:调度中心,新建调度任务:

参考上文“配置属性详细说明”对新建的任务进行参数配置,运行模式选中 “GLUE模式(Java)”;

xxl-job配置及使用

步骤二:开发任务代码:

选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(也可以在IDE中开发完成后,复制粘贴到编辑中)。

版本回溯功能(支持30个版本的版本回溯):在GLUE任务的Web IDE界面,选择右上角下拉框“版本回溯”,会列出该GLUE的更新历史,选择相应版本即可显示该版本代码,保存后GLUE代码即回退到对应的历史版本;

xxl-job配置及使用

xxl-job中的cron表达式详解

xxl-job的表达式由7个部分组成,例如:
注:/与5算是一个整体

秒数 分钟 小时 日期 月份 星期 年份(可为空)}
*/5 * * * * ?

各个位置的取值范围

秒 0-59 , - * /

分 0-59 , - * /

小时 0-23 , - * /

日期 1-31 , - * ? / L W C

月份 1-12 或者 JAN-DEC , - * / 可以用0-11 或用字符串 “JAN, FEB, MAR, APR, MAY,
JUN, JUL, AUG, SEP, OCT, NOV and DEC” 表示

星期 1-7 或者 SUN-SAT , - * ? / L C # 可以用数字1-7表示(1 = 星期日)或用字符口串“SUN, MON,
TUE, WED, THU, FRI and SAT”表示

年(可选) 留空, 1970-2099 , - * /

上述取值范围中的符号详解

  * 表示所有值;  

  ? 表示未说明的值,即不关心它为何值;

  - 表示一个指定的范围;  

  , 表示附加一个可能值;

  / 符号前表示开始时间,符号后表示每次递增的值;

下面是一些表达式的案例和cron表达式生成器地址

*/5 * * * * ? 每隔5秒执行一次

0 */1 * * * ? 每隔1分钟执行一次

0 0 5-15 * * ? 每天5-15点整点触发

0 0/3 * * * ? 每三分钟触发一次

0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发

0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发

0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发

0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时

0 0 10,14,16 * * ? 每天上午10点,下午2点,4

0 0 12 ? * WED 表示每个星期三中午12

0 0 17 ? * TUES,THUR,SAT 每周二、四、六下午五点

0 10,44 14 ? 3 WED 每年三月的星期三的下午2:102:44触发

0 15 10 ? * MON-FRI 周一至周五的上午10:15触发

0 0 23 L * ? 每月最后一天23点执行一次

0 15 10 L * ? 每月最后一日的上午10:15触发

0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发

0 15 10 * * ? 2005 2005年的每天上午10:15触发

0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发

0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发

"30 * * * * ?" 每半分钟触发任务

"30 10 * * * ?" 每小时的1030秒触发任务

"30 10 1 * * ?" 每天11030秒触发任务

"30 10 1 20 * ?" 每月2011030秒触发任务

"30 10 1 20 10 ? *" 每年102011030秒触发任务

"30 10 1 20 10 ? 2011" 2011102011030秒触发任务

"30 10 1 ? 10 * 2011" 201110月每天11030秒触发任务

"30 10 1 ? 10 SUN 2011" 201110月每周日11030秒触发任务

"15,30,45 * * * * ?" 每15秒,30秒,45秒时触发任务

"15-45 * * * * ?" 1545秒内,每秒都触发任务

"15/5 * * * * ?" 每分钟的每15秒开始触发,每隔5秒触发一次

"15-30/5 * * * * ?" 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次

"0 0/3 * * * ?" 每小时的第00秒开始,每三分钟触发一次

"0 15 10 ? * MON-FRI" 星期一到星期五的10150秒触发任务

"0 15 10 L * ?" 每个月最后一天的10150秒触发任务

"0 15 10 LW * ?" 每个月最后一个工作日的10150秒触发任务

"0 15 10 ? * 5L" 每个月最后一个星期四的10150秒触发任务

"0 15 10 ? * 5#3" 每个月第三周的星期四的10150秒触发任务

版权声明:程序员胖胖胖虎阿 发表于 2022年9月10日 上午9:48。
转载请注明:xxl-job配置及使用 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...