《从零打造项目》系列文章

工具

比MyBatis Generator更强大的代码生成器

ORM框架选型

SpringBoot项目基础设施搭建

SpringBoot集成Mybatis项目实操

SpringBoot集成Mybatis Plus项目实操

SpringBoot集成Spring Data JPA项目实操

数据库变更管理

数据库变更管理:Liquibase or Flyway

SpringBoot结合Liquibase实现数据库变更管理

定时任务框架

Java定时任务技术分析

SpringBoot结合Quartz实现定时任务

SpringBoot结合XXL-JOB实现定时任务

缓存

Spring Security结合Redis实现缓存功能

安全框架

Java应用程序安全框架

Spring Security系列文章

Spring Security结合JWT实现认证与授权

开发规范

后端必知:遵循Google Java规范并引入checkstyle检查

前言

上篇文章我们介绍了 Quartz 的使用,当时实现了两个简单的需求,不过最后我们总结的时候也提到 Quartz 有不少缺点,代码侵入太严重,所以本篇将介绍 xxl-job 这个定时任务框架。

Quartz的不足

Quartz 的不足:Quartz 作为开源任务调度中的佼佼者,是任务调度的首选。但是在集群环境中,Quartz采用API的方式对任务进行管理,这样存在以下问题:

通过调用API的方式操作任务,不人性化。

需要持久化业务的 QuartzJobBean 到底层数据表中,系统侵入性相当严重。

调度逻辑和QuartzJobBean耦合在同一个项目中,这将导致一个问题,在调度任务数量逐渐增多,同时调度任务逻辑逐渐加重的情况下,此时调度系统的性能将大大受限于业务。

Xxl-job介绍

官方说明:XXL-JOB 是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

通俗来讲:XXL-JOB 是一个任务调度框架,通过引入 XXL-JOB 相关的依赖,按照相关格式撰写代码后,可在其可视化界面进行任务的启动,执行,中止以及包含了日志记录与查询和任务状态监控。

更多详细介绍推荐阅读官方文档。

项目实践

Spring Boot集成XXL-JOB

Spring Boot 集成 XXL-JOB 主要分为以下两步:

配置运行调度中心(xxl-job-admin)

配置运行执行器项目

xxl-job-admin 可以从源码仓库中下载代码,代码地址有两个:

GitHub:github.com/xuxueli/xxl…

Gitee:gitee.com/xuxueli0323…

下载完之后,在 doc/db 目录下有数据库脚本 tables_xxl_job.sql,执行下脚本初始化调度数据库 xxl_job,如下图所示:

配置调度中心

将下载的源码解压,用 IDEA 打开,我们需要修改一下 xxl-job-admin 中的一些配置。(我这里下载的是最新版 2.3.1)

1、修改 application.properties,主要是配置一下 datasource 以及 email,其他不需要改变。

### 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=root

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

### xxl-job, email

spring.mail.host=smtp.qq.com

spring.mail.port=25

spring.mail.username=1739468244@qq.com

spring.mail.from=1739468244@qq.com

# 此处不是邮箱登录密码,而是开启SMTP服务后的授权码

spring.mail.password=xxxxx

2、修改 logback.xml,配置日志输出路径,我是在解压的 xxl-job-2.3.1 项目包中新建了一个 logs 文件夹。

然后启动项目,正常启动后,访问地址为:http://localhost:8080/xxl-job-admin,默认的账户为 admin,密码为 123456,访问后台管理系统后台。

这样就表示调度中心已经搞定了,下一步就是创建执行器项目。

创建执行器项目

本项目与 Quartz 项目用的业务表和业务逻辑都一样,所以引入的依赖会比较多。

环境配置

1、引入依赖:

org.springframework.boot

spring-boot-starter-parent

2.6.3

1.8

1.2.73

5.5.1

8.0.19

1.4.2.Final

1.18.20

1.1.18

1.6.9

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-aop

com.xuxueli

xxl-job-core

2.3.1

com.baomidou

mybatis-plus-boot-starter

3.5.1

com.baomidou

mybatis-plus

3.5.1

mysql

参考文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: