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://edu.ichenhua.cn/read/50
- 下一篇:
- 基金定投是最好的大众理财方式