Springboot 开发之任务调度框架(二) XXL-Job 从入门到实战

一、 XXL-Job 简介

XXL-Job 是一个开源的分布式任务调度平台,主要用于解决大规模任务调度问题。其设计理念是轻量、高效、易扩展,能够适用于各种复杂的分布式系统。

官方文档地址:https://www.xuxueli.com/xxl-job/

源码仓库地址

https://github.com/xuxueli/xxl-job	
http://gitee.com/xuxueli0323/xxl-job	

中央仓库地址

<!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>${最新稳定版本}</version>
</dependency>

特点:

  • 简单易用:提供友好的 Web 管理界面
  • 灵活调度:支持多种调度策略和调度类型
  • 高可用:支持分布式部署和任务执行的高可用性
  • 强扩展性:易于与现有系统集成

二、核心概念

  • 调度器(Scheduler): 负责管理和调度任务,通常部署在服务端。

  • 执行器(Executor): 执行调度器分配的任务,通常部署在应用服务中。

  • 调度任务(Job): 具体执行的任务,可以是简单的 HTTP 调用、Shell 脚本,或是 Java 方法。

  • 调度策略: 指定任务的执行策略,如固定频率执行、Cron 表达式等。

三、 环境配置

在开始使用 XXL-Job 之前,我们需要先搭建其运行环境。这里介绍的是基于 Spring Boot 项目的基本搭建步骤。

环境要求

  • Maven3+
  • Jdk1.8+
  • Mysql8.0+

1. 下载 XXL-Job Admin:

前往 XXL-Job gitee 网站,下载最新版本的 XXL-Job Admin。
在这里插入图片描述

调度中心支持集群部署,集群情况下各节点务必连接同一个mysql实例; 如果mysql做主从,调度中心集群节点务必强制走主库;

2. 配置数据库:

创建 MySQL 数据库并导入官网提供的初始化 SQL 脚本,初始化SQL脚本位置为:

/xxl-job/doc/db/tables_xxl_job.sql

在这里插入图片描述

3. 修改配置文件:

在 application.properties 中配置数据库连接信息。

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_pwd
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
### 报警邮箱
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=xxx@qq.com
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
### 调度中心通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=
### 调度中心国际化配置 [必填]: 默认为 "zh_CN"/中文简体, 可选范围为 "zh_CN"/中文简体, "zh_TC"/中文繁体 and "en"/英文;
xxl.job.i18n=zh_CN
## 调度线程池最大线程配置【必填】
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100
### 调度中心日志表数据保存天数 [必填]:过期日志自动清理;限制大于等于7时生效,否则, 如-1,关闭自动清理功能;
xxl.job.logretentiondays=30

4. 访问管理界面:

打开浏览器,访问: http://localhost:8080/xxl-job-admin

默认账号/密码 admin/admin

四、基本操作

在熟悉了 XXL-Job 的核心概念后,我们来介绍一些基本操作,包括创建任务、配置任务和查看任务执行日志。

  1. 创建任务:
  • 登录 XXL-Job Admin 管理界面。
  • 进入任务管理页面,点击“新增”按钮。
  • 填写任务信息,包括任务描述、调度类型、执行器等。
{
  "jobGroup": 1,
  "jobDesc": "示例任务",
  "author": "admin",
  "scheduleType": "CRON",
  "scheduleConf": "0 0/1 * * * ?",
  "executorRouteStrategy": "ROUND",
  "executorHandler": "demoJobHandler",
  "executorParam": "",
  "glueType": "BEAN",
  "executorBlockStrategy": "SERIAL_EXECUTION",
  "misfireStrategy": "DO_NOTHING",
  "executorTimeout": 0,
  "executorFailRetryCount": 0
}
  1. 配置任务:

在任务列表中找到刚刚创建的任务,点击“编辑”按钮。
配置任务执行参数,如执行器的路由策略、任务超时时间等。
查看任务日志:

在任务列表中找到需要查看的任务,点击“日志”按钮。
查看任务的执行记录和日志信息,排查任务执行过程中的问题。

  1. 进阶应用
  • 分布式部署:

配置多台调度器和执行器,实现高可用的分布式调度。
使用 Nginx 等负载均衡工具分发请求。
任务监控和报警:

配置任务的执行监控,实时获取任务的执行状态。
设置报警规则,当任务执行失败或超时时发送报警通知。

五、与 Spring Boot 集成:

在 Spring Boot 项目中引入 XXL-Job 执行器依赖。
配置 XXL-Job 执行器相关参数,实现任务的分布式执行。

<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>2.3.0</version>
</dependency>

六. 常见问题及解决方案

  1. 问题:任务执行失败

检查执行器是否启动,并确保与调度器的网络连接正常。
查看任务执行日志,定位具体错误信息。

  1. 问题:任务未按时执行

确认调度策略配置正确,特别是 Cron 表达式。
检查调度器的运行状态,确保其正常工作。

  1. 问题:执行日志丢失

检查日志存储配置,确保日志服务正常运行。
定期备份日志数据,防止数据丢失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值