微服务任务调度XXL-JOB实战(docker)

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的名称,必须一致。

其他的参数可以根据情况,填写即可。

启动任务

在任务管理页面,选择一个任务,然后点击启动

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

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

相关推荐
小毅&Nora1 小时前
【微服务】【部署】 ② 优雅停机 - 从“关门打烊“到“无缝交接“的实战指南
微服务·云原生·架构
weixin_46681 小时前
Docker 概述与安装
docker·容器·eureka
Gogo8161 小时前
docker 容器
运维·docker·容器
一条懒鱼6661 小时前
K8S-Deployment资源对象
docker·容器·kubernetes
曾经的三心草2 小时前
微服务的编程测评系统-修改登录逻辑为邮箱登录
微服务·云原生·架构
北珣.2 小时前
docker-搭建nginx服务
nginx·docker·dubbo
为什么要内卷,摆烂不香吗2 小时前
Dockerfile 与 Docker Compose 在 CI/CD 管道中的分工与配合方式
ci/cd·docker·容器
saber_andlibert3 小时前
【docker】存储卷
docker·容器·eureka
阿拉斯攀登3 小时前
分布式、微服务与云原生:概念解析与关联梳理
分布式·微服务·云原生