微服务任务调度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的名称,必须一致。

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

启动任务

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

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

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

相关推荐
半夏知半秋1 小时前
docker常用指令整理
运维·笔记·后端·学习·docker·容器
没有bug.的程序员3 小时前
Nacos vs Eureka 服务发现深度对比
jvm·微服务·云原生·容器·eureka·服务发现
记得记得就1514 小时前
docker作业
运维·docker·容器
HaSaKing_7215 小时前
EMQX 多机集群部署完整实践(Docker + 社区版 5.8.8)
运维·docker·容器·emqx
❀͜͡傀儡师6 小时前
Docker部署WebDB数据库开发环境
docker·容器·数据库开发
南山nash6 小时前
企业级docker镜像仓库harbor安装与使用
运维·docker·容器·镜像仓库
m0_485614676 小时前
Linux--Docker网络管理
linux·docker·eureka
黄俊懿7 小时前
【深入理解SpringCloud微服务】Seata(AT模式)源码解析——全局事务的回滚
java·后端·spring·spring cloud·微服务·架构·架构师
Knight_AL8 小时前
Docker 中的端口映射原理:为什么 Nginx 要 `listen 80`,而不是“随便写端口”
nginx·docker·容器
小波小波轩然大波9 小时前
docker总结
网络·docker·容器