定时任务 XXL Job
定时任务的使用场景主要如下:
- 时间驱动处理场景:每分钟扫描超时支付的订单,活动状态刷新,整点发送优惠券。
- 批量处理数据:按月批量统计报表数据,批量更新短信状态,实时性要求不高。
年度最佳定时任务:每个月初的工资单的推送!!!
项目基于 XXL Job 实现分布式定时任务,支持动态控制任务的添加、修改、开启、暂停、删除、执行一次等操作。
# 1. 如何搭建 XXL Job 调度中心
① 参见 《芋道 XXL-Job 极简入门》 (opens new window) 文档的「4. 搭建调度中心 」部分。
② 搭建完成后,需要修改管理后台的 [基础设施 -> 定时任务] 菜单,指向你的 XXL-Job 地址。如下图所示:
# 2. 如何编写 XXL Job 定时任务
友情提示:以 yudao-module-system 服务为例子。
# 2.1 引入依赖
在 yudao-module-system-biz
模块的 pom.xml
(opens new window) 中,引入 yudao-spring-boot-starter-job
技术组件。如下所示:
1 |
|
该组件基于 XXL Job 框架的封装,实现它的 Spring Boot Starter 配置。
# 2.2 添加配置
① 在 application.yaml
(opens new window) 中,添加 xxl.job
配置。如下所示:
1 |
|
- 注意,
xxl.job.accessToken
配置,需要改成你的 XXL Job 调度中心的访问令牌。
② 在 application-local.yaml
(opens new window) 中,添加 xxl.job
配置。如下所示:
1 |
|
# 2.3 创建 Job 定时任务
参见 《芋道 Spring Boot 定时任务入门》 ( opens new window) 文章的「5. 快速入门 XXL-JOB」部分。
常用的 Cron 表达式如下:
1 |
|
疑问:为什么 Job 查询数据库时,报多租户的错误?
需要声明 @TenantJob
(opens new window) 注解在 Job 类上,实现并行遍历每个租户,执行定时任务的逻辑。
更多多租户的内容,可见 《开发指南 —— SaaS 多租户》 文档。
上次更新: 2023/04/09, 17:01:04