嗷呜公
宇宙同频

部署xxl-job定时任务系统

code

缘由

定时任务系统是非常实用的,简单到每天的爬虫、发送提醒之类的任务
首选是xxl-job,稳定。下面教程在服务器部署它

部署xxljob

本例子服务器使用系统是CentOS7
xxl-job是Java项目依赖于java11、maven,先要安装

安装java11

# 查看旧版本java
rpm -qa |grep java
# 删除旧版本java
yum -y remove java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64

# 安装java11
yum install -y java-11-openjdk
# 查看java版本
java -version

# 查看open jdk安装在了哪里
which java
ls -lrt /usr/bin/java
ls -lrt /etc/alternatives/java
# 上面这句的结果复制到下面使用
/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64/bin/java
# 配置环境变量
vim /etc/profile
# 在最底添加
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

安装maven

centos安装maven-CSDN博客

# 查看是否有maven
ls /usr/local
# 创建maven文件夹
mkdir /usr/local/maven
# 进入maven文件夹
cd /usr/local/maven
# 下载maven
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.zip
# 解压maven
unzip apache-maven-3.9.4-bin.zip
# 配置maven环境变量
vim /etc/profile
# 添加这两行
MAVEN_HOME=/usr/local/maven/apache-maven-3.9.4
export PATH=${MAVEN_HOME}/bin:${PATH}
# 重启环境变量
source  /etc/profile
# 验证安装成功
mvn -v

部署xxljob调度器

# 找个位置,拉取xxl项目
git clone https://github.com/howie110/xxl-job-example.git
# 初始化数据库,把xxl项目/sql/tables_xxl_job.sql内容复制到你的mysql运行
# 部署
cd xxl-job-example
# 填写docker-compose.yaml里面的数据库IP账号密码
docker compose up -d

部署xxljob执行器

# mvn打包pom.xml成为执行器,完成后有target文件夹。这句打包太慢了,可以在windows打包生成.jar文件再上传
mvn clean package
# 启动执行器
nohup java -jar target/xxl-job-example-1.0.0.jar >/dev/null 2>&1 &

使用xxljob

登陆xxl管理页面

http://IP:7070/xxl-job-admin
user/pwd: admin/123456
新增一个执行器,名字AppName: xxl-job-example-executor

新建任务

image.png

GLUE(Python)配置

我后端使用的是docker部署的django项目,下面这个是直接调用执行镜像里面的代码。这一步需要根据自己实际情况调整

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import sys
import subprocess
funcname = eval(sys.argv[1])[0]

def execute_docker_command():
    # 构建 Docker 命令
    docker_command = "docker exec django_cicd_docker-web-1 python /app/xxl_job_python_shell.py \"['%s']\""%funcname
    
    # 执行 Docker 命令
    result = subprocess.call(docker_command, shell=True)
    
    # 返回执行的状态码(0 表示成功,非 0 表示失败)
    return result

# 调用执行 Docker 命令的函数
execute_docker_command()

进阶学习

docker部署调度器执行器
Docker
分布式任务调度平台XXL-JOB

嗷呜公
© 2024
嗷呜公