xxl-job

XXL-JOB是一个轻量级分布式任务调度框架。
它解决的问题是能在统一的界面上,方便的管理一堆定时执行的、或相互依赖的任务,让他们并行或以正确的顺序串行在一组机器上执行,并且对执行结果进行管理,包括执行日志,失败通知等。

官网

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

源码仓库

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

编译环境

Maven3+
Jdk1.8+

运行环境

Jre1.8+
Mysql5.7+

任务运行模式

任务运行模式是指任务通过何种代码部署(粘合)到任务调度中心,默认的方式支持:Shell、Python、Nodejs、PowerShell等,比如我在下面添加了Python3
com.xxl.job.core.glue.GlueTypeEnum

1
2
3
4
5
6
7
8
BEAN("BEAN", false, null, null),
GLUE_GROOVY("GLUE(Java)", false, null, null),
GLUE_SHELL("GLUE(Shell)", true, "bash", ".sh"),
GLUE_PYTHON("GLUE(Python)", true, "python", ".py"),
GLUE_PYTHON3("GLUE(Python3)", true, "python3", ".py"),
GLUE_PHP("GLUE(PHP)", true, "php", ".php"),
GLUE_NODEJS("GLUE(Nodejs)", true, "node", ".js"),
GLUE_POWERSHELL("GLUE(PowerShell)", true, "powershell", ".ps1");

配置文件

调度中心配置

1
2
./xxl-job-admin/src/main/resources/application.properties
./xxl-job-admin/src/main/resources/logback.xml

主要要确保数据库(xxl-job, datasource)配置正确

执行器配置

1
2
./xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties
./xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/logback.xml

主要注意两个地方:
调度中心地址
xxl.job.admin.addresses
执行器appname,相同appname的执行器构成一个执行器集群,在调度时不区分,不同的appname在配置任务时可选择由哪个appname的执行器执行
xxl.job.executor.appname

数据库初始化

1
./doc/db/tables_xxl_job.sql

构建方法

重新构建
mvn clean package
增量构建
mvn package

运行调度中心

构建完默认会生成

1
./xxl-job-admin/target/xxl-job-admin*.jar

可以重命名并复制到其他路径,启动命令

1
java -jar xxl-job-admin*.jar

默认通过

1
http://localhost:8080/xxl-job-admin/

访问调度中心,端口和路径在配置文件application.properties中可修改
用户名admin,密码123456,可以在登录后修改

运行执行器

构建完默认会生成

1
./xxl-job-executor-samples/xxl-job-executor-sample-springboot/target/xxl-job-executor*.jar

可以重命名并复制到其他主机,启动命令

1
java -jar xxl-job-executor*.jar

启动后会根据配置自动向调度中心注册自己