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

以上是官方的介绍,我理解就是一个可以通过页面配置,实现Crontab定时任务控制的调度平台。当然还有分布式,秒级执行等功能。但是我觉得,这些都是次要的,对我来说最主要的是可以通过页面配置,控制任务的开启和关闭。

下面我就具体介绍一下 XXL-JOB 的安装和使用过程:

过程大概分为四步:

1、本地修改配置、安装环境和IDE、打 jar 包

2、线上配置 java 环境

3、线上部署 "调度中心项目" 和 "执行器项目"

4、调度中心配置 crontab 脚本

一、本地修改配置和打 jar 包

1.1 本地配置 java 环境

下载 jdk(Java SE 8u221版本):

地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html

文件:jdk-8u221-windows-x64.exe

1.2 环境变量配置

JAVA_HOME:C:\Program Files\Java\jdk1.8.0_211
Path:%JAVA_HOME%\bin;(追加)
CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

1.3 测试配置

CMD窗口输入:javac

不报错说明配置成功.

1.4 下载并解压 Maven

地址:https://maven.apache.org/download.cgi

将压缩包解压到自定义的目录中,例如:

D:\Library\Apache\maven

1.5 环境变量配置

MAVEN_HOME:D:\Library\Apache\maven
Path:%MAVEN_HOME%\bin(追加)

1.6 测试配置

CMD窗口输入:mvn -v

不报错说明配置成功.

1.7 配置 Maven 的本地仓库和镜像

打开文件:D:\Library\Apache\maven\conf\settings.xml

把这项配置的注释解开,并修改路径,例如:

D:/Library/Apache/maven/repo

这项配置主要是设置依赖包的存储位置,不配置会默认放到 C盘。

另外就是配置镜像,在配置中,添加阿里云的镜像地址:

< mirror>
< id>nexus-aliyun< /id>
< mirrorOf>*< /mirrorOf>
< name>Nexus aliyun< /name>
< url>http://maven.aliyun.com/nexus/content/groups/public< /url>
< /mirror>

1.8 安装IDE(IntelliJ IDEA)

下载地址:https://www.jetbrains.com/idea/download/

社区版就够用,不需要激活码。

1.9 下载源码,并导入IDE

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

建议使用最新版,且不向下兼容

1.10 下载依赖

xxl-job-core目录下,执行 mvn install,或者通过 IDE 右侧 Maven 面板,点击 Lifecycle - install

1.11 修改调度中心配置

修改调度中心数据库连接信息:

xxl-job/xxl-job-admin/src/main/resources/application.properties

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root_pwd
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

修改端口和地址(可不修改):

server.port=8080
server.context-path=/xxl-job-admin

修改日志路径:

xxl-job/xxl-job-admin/src/main/resources/logback.xml

< property name="log.path" value="/data/applogs/xxl-job/xxl-job-admin.log"/>

1.12 修改执行器配置

可以使用这个示例执行器打包:

xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties

修改为调度中心的IP:

xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin

修改执行器名称:

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

修改日志路径:

xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/logback.xml

< property name="log.path" value="/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log"/>

1.13 打包调度中心和执行器

xxl-job-admin:Lifecycle - package
xxl-job-executor-sample-springboot:Lifecycle - package

打包完成后,在两个项目的 target 目录中,找到两个 jar 包:

xxl-job-admin-2.1.1-SNAPSHOT.jar
xxl-job-executor-sample-springboot-2.1.1-SNAPSHOT.jar

二、线上配置 java 环境

2.1 下载 jre 包

地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html

文件:server-jre-8u221-linux-x64.tar.gz

2.2 上传到服务器,找个合适的位置解压

tar -zxvf server-jre-8u221-linux-x64.tar.gz

2.3 配置环境变量

vi /etc/profile

export JAVA_HOME=/home/java
export JRE_HOME=/home/java/jdk1.8.0_221
export CLASSPATH=$JRE_HOME/lib/rt.jar:$JRE_HOME/lib/ext
export PATH=$PATH:$JRE_HOME/bin

使环境变量生效:

source /etc/profile

测试:java -version

三、线上部署 "调度中心项目" 和 "执行器项目"

安装完成后,在调度机和执行机上分别执行(文件存放地址可以自己调整):

nohup java /home/work/local/xxl-job-admin-2.1.1-SNAPSHOT.jar
nohup java /home/work/local/xxl-job-executor-sample-springboot-2.1.1-SNAPSHOT.jar

执行后,可以看一眼日志文件,是否启动成功。

四、调度中心配置脚本

4.1 登录调度中心

登录调度中心:http://10.10.176.192/xxl-job-admin

默认用户:admin  123456

4.2 新增执行器

执行器管理 - 新增执行器

AppName:执行器配置项的值(xxl.job.executor.appname)

注册方式:建议自动注册

如果没有问题,一分钟左右,在执行器列表页,会出现 OnLine 机器地址的IP,说明连接成功。

4.3 新增任务

任务管理 - 新增任务

重点关注以下几个参数:

执行器:找到上面新增的
Cron:*/10 * * * * ? (10秒执行一次)
运行模式:BEAN
JobHandler:commandJobHandler
任务参数:php7 /home/work/wwwserver/cc/cc_91renxin_com/artisan call:pull_record

任务参数就填 Laravel 框架的任务脚本,注意 artisan 最好写完整路径。

补充说明

Cron表达式格式:秒 分 时 日 月 周 年(可选)

例子:

每隔5秒执行一次:*/5 * * * * ?
每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L
在26分、29分、33分执行一次:0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

本文为 陈华 原创,欢迎转载,但请注明出处:http://www.ichenhua.cn/blog/post/50