xxl-job是什么
xxl-job是国人开发的一款非常优秀的微服务定时任务执行管理工具。
xxl-job官方文档:
https://www.xuxueli.com/xxl-job/index.html
xxl-job管理端部署
安装MySQL
先要部署MySQL数据库,然后完成数据库的初始化,这里也是用docker完成。
docker run -d --name mysql8 --hostname mysql8 \
--restart=always \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root用户的密码 \
-e TZ=Asia/Shanghai \
-v mysql-data:/var/lib/mysql \
mysql:8.0.22 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
--default-time-zone=+8:00
需要把密码改下,然后执行。就会在docker中启动MySQL的容器。
初始化数据库
接着去xxl-job官方仓库中,下载MySQL数据库建库的脚本,完成数据库的初始化。
以3.3.0版本为例,下载地址:https://gitee.com/xuxueli0323/xxl-job/blob/3.3.0/doc/db/tables_xxl_job.sql

在已经创建的MySQL数据库,直接执行该脚本,就可以完成xxl_job数据库的创建。
管理端部署
数据库初始化完成,接下来在docker中部署xxl-job的管理端
拉取镜像文件,版本为3.3.0,这是的版本号根据官网提供的版本号,选择合适的版本使用,默认使用最新版即可。
通过gitee可以看当前最新版本是多少
https://gitee.com/xuxueli0323/xxl-job

docker拉取镜像
docker pull xuxueli/xxl-job-admin:3.3.0
镜像拉取完成,启动容器
docker run -d \
-e PARAMS="--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=MySQL数据库root用户的密码 --xxl.job.accessToken=default_token" \
-p 10105:8080 \
-v /tmp:/data/applogs \
--name xxl-job-admin \
xuxueli/xxl-job-admin:3.3.0
上面的命令,需要修改MySQL数据库root用户的密码,在创建数据库的时候设置的密码。
127.0.0.1改为MySQL所在的服务器。
10105端口可以修改为指定的端口,只要是没有被占用,都可以。
上面的命令执行完成后,就可以在浏览器访问管理端。
访问管理端
http://192.168.0.100:10105/xxl-job-admin/auth/login

默认登录账号 "admin/123456", 登录后运行界面如下图所示。

xxl-job实战
下载示例项目代码
下面用一个案例,演示一下xxl-job的具体使用,自己编写一个Java程序,使用xxl-job,完成定时任务的操作。
下面演示用的示例代码,可以通过下面的链接下载:
https://download.csdn.net/download/liangmengbk/92428233
修改配置文件
下载代码后,只需要改动这一个配置的地方就可以,这里的IP改成xxl-job管理端的IP和端口,上一步已经配置完成的。

修改完成,将项目进行打包,然后把应用部署到docker中。
项目打包
双击maven的package,然后就可以完成项目的打包,最终在target目录下面生成jar文件。

编写Dockerfile
创建一个TXT文本,然后把文件名称改为Dockerfile,删除文件后缀名称,文件内容如下:
FROM eclipse-temurin:17-jre-alpine
WORKDIR /usr/local
COPY xxl-job-sample-0.0.1-SNAPSHOT.jar .
EXPOSE 10106
CMD java -jar xxl-job-sample-0.0.1-SNAPSHOT.jar
上传文件
将Dockerfile文件和jar文件,一起上传到服务器上,如下图所示:

构建镜像
在linux命令行,输入下面命令,构建docker镜像,需要先进入到Dockerfile文件所在的目录,然后执行命令:
docker build -t xxl-job-service .

启动容器
镜像构建完成,执行下面的脚本,启动容器
docker run -d \
--name xxl-job-service \
-v /opt/micro-service/xxl-job/logs:/opt/micro-service/xxl-job/logs \
-p 10106:10106\
xxl-job-service
检查容器启动状态
docker ps -a | grep xxl

看到容器都是Up的状态,说明是正常的。
创建执行器
打开管理端,新建执行器

AppName:batch-process-job,这里的名称,跟示例项目中的配置文件定义的名称相同

名称:自己根据情况填写。
注册方式:自动注册。项目启动后,会自动注册进来。
新建任务

执行器:选择刚才创建的执行器。
Cron:设置任务执行的频次。
JobHandler:batchProcessJob,对应的是示例代码中的job的名称,必须一致。

其他的参数可以根据情况,填写即可。
启动任务
在任务管理页面,选择一个任务,然后点击启动

刚才配置的是每分钟执行一次任务,所以等待一分钟后,在调度日志模块,就可以看到执行的日志信息

同时在服务器的日志文件夹中,也可以看到对应的日志文件
