一、源码下载地址
①、GitHub:https://github.com/xuxueli/xxl-job
②、码云:https://gitee.com/xuxueli0323/xxl-job
二、源码结构
三、部署准备
在win10上需要使用maven工具生成项目jar包,需要安装java和maven(如java version "1.8.0_381"和Apache Maven 3.9.5)
在linux服务器上进行项目部署,需要安装合适的java,mysql和nginx版本,(如java version "1.8.0_381" ,mysql-5.7.40,nginx version: nginx/1.24.0)
四、初始化数据库
把xxl-job项目源码下doc/db/tables_xxl_job.sql数据库初始化脚本上传到服务器,在mysql中执行source 该sql文件命令即可
五、配置调度中心
xxl-job-admin 目录下application.properties
①服务的web端口与上下文路径
通过http://172.23.68.88:8080/xxl-job-admin访问任务调度中心的界面
### web
server.port=8080
server.servlet.context-path=/xxl-job-admin
②数据库连接
### xxl-job, datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
六、调整日志路径
xxl-job-core目录下的com.xxl.job.core.log.XxlJobFileAppender中配置了执行器任务脚本的日志路径,可自定义服务器日志保存路径。
源代码如下:
自定义代码如下:任务执行的脚本相关代码日志保存路径为 /opt/xxl-job/xxl-job-executor/logs
七、配置执行器
xxl-job-executor-sample-springboot目录下application.properties
# web port
server.port=8081
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### xxl-job, access token
xxl.job.accessToken=default_token
### xxl-job executor appname
xxl.job.executor.appname=xxl-job-executor-sample
### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
xxl.job.executor.address=
### xxl-job executor server-info
xxl.job.executor.ip=172.23.68.88
xxl.job.executor.port=8099
### xxl-job executor log-path
xxl.job.executor.logpath=/opt/xxl-job/xxl-job-executor/logs
### xxl-job executor log-retention-days
xxl.job.executor.logretentiondays=30
八、maven打包生成项目jar包
调用mvn package命令将xxl-job项目按照pom.xml打包各个模块的项目,生成的jar包保存在对应项目的target目录中,将所需的jar包上传至部署服务器指定目录中即可
九、后端项目管理
把xxl-job-admin和xxl-job-executor生成的jar包分别上传到服务器上,目录结构参考如下。使用脚本admin.sh和executor.sh分别管理任务调度中心和任务执行器项目服务的启动、关闭、状态查看和重启
[root@ecs0 xxl-job]# cat xxl-job-admin/admin.sh
#!/bin/bash
APP_NAME='xxl-job-admin-2.4.1-SNAPSHOT.jar'
#使用说明,用来提示输入参数
usage(){
echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
exit 1
}
#检查程序是否在运行
is_exist(){
pid=`ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}'`
#如果不存在返回1,存在返回0
if [ -z "${pid}" ];then
return 1
else
return 0
fi
}
#启动方法
start(){
is_exist
if [ $? -eq "0" ];then
echo "${APP_NAME} is already running. pid=${pid}"
else
nohup java -jar ${APP_NAME} >./admin-start.log 2>&1 &
fi
}
#停止方法
stop(){
is_exist
if [ $? -eq "0" ];then
kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
}
#输出运行状态
status(){
is_exist
if [ $? -eq "0" ];then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
#重启
restart(){
stop
start
}
case "$1" in
"start")
start;;
"stop")
stop;;
"status")
status;;
"restart")
restart;;
*)
usage;;
esac
[root@ecs0 xxl-job]# cat xxl-job-executor/executor.sh
#!/bin/bash
APP_NAME='xxl-job-executor-sample-springboot-2.4.1-SNAPSHOT.jar'
#使用说明,用来提示输入参数
usage(){
echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
exit 1
}
#检查程序是否在运行
is_exist(){
pid=`ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}'`
#如果不存在返回1,存在返回0
if [ -z "${pid}" ];then
return 1
else
return 0
fi
}
#启动方法
start(){
is_exist
if [ $? -eq "0" ];then
echo "${APP_NAME} is already running. pid=${pid}"
else
nohup java -jar ${APP_NAME} >./executor-start.log 2>&1 &
fi
}
#停止方法
stop(){
is_exist
if [ $? -eq "0" ];then
kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
}
#输出运行状态
status(){
is_exist
if [ $? -eq "0" ];then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
#重启
restart(){
stop
start
}
case "$1" in
"start")
start;;
"stop")
stop;;
"status")
status;;
"restart")
restart;;
*)
usage;;
esac
如上,通过sh admin.sh start 和sh executor.sh start启动项目程序,并可通过nginx进行服务转发。
server {
listen 80;
server_name myserver;
# xxl-job-admin
location /xxl-job-admin {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://172.23.68.88:8080/xxl-job-admin;
proxy_redirect off;
}
}
十、访问XXL-JOB
①web地址:http://myserver:80/xxl-job-admin
默认登录账密:admin/123456
②执行器管理,以上配置的执行器已成功添加并自动注册到了数据库中。
③任务管理,新增一个任务并执行一次,查看其日志信息,如下使用配置的“示例执行器”执行成功,任务执行结果保存的日志路径为以上自定义的日志路径。