程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 若依框架
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 若依框架
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 快速入门

  • 后端手册

    • 分页实现
    • 导入导出功能
    • 文件上传与下载
    • 权限注解实现
    • 事务管理详解
    • 全局异常处理
    • 参数验证详解
    • 数据脱敏详解
    • 系统日志功能实现
    • 数据权限控制
    • 多数据源实现
    • 代码生成功能
    • 定时任务实现
      • 一、定时任务的实现方式
        • 1. 定时任务处理类的定义
        • 2. 在前端新建定时任务
        • 3. 执行一次测试
      • 二、Cron表达式详解
        • 常见Cron表达式示例
      • 三、定时任务的执行策略与参数类型
        • 1. 执行策略详解
        • 2. 方法参数类型详解
      • 四、定时任务的管理与监控
      • 五、多模块支持与数据库配置
        • 数据库支持
      • 六、总结
    • 系统接口文档生成
    • 防重复提交实现
    • 国际化支持
    • 新建子模块
  • 前端手册

  • 组件文档

  • 数据库分析

  • 若依框架
  • 后端手册
scholar
2024-08-31
目录

定时任务实现

# 定时任务实现

在企业级应用开发中,定时任务是一个不可或缺的功能,用于自动化执行一些需要定时处理的任务,如数据清理、报表生成、邮件发送等。若依框架提供了一个强大的定时任务模块,使得定时任务的管理更加便捷,通过Web界面即可对任务进行添加、修改、删除、暂停、启动等操作。本文将详细介绍如何在若依框架中实现定时任务。

# 一、定时任务的实现方式

若依框架通过 Quartz 框架实现了定时任务调度。我们可以通过添加 @Component 或 @Service 注解来定义定时任务处理类,并在需要调度的方法上使用自定义的业务逻辑。

# 1. 定时任务处理类的定义

首先,需要在后台定义一个定时任务处理类,并实现具体的业务逻辑。若依框架支持两种调用方式:Bean调用和Class类调用。

  • Bean调用示例: 需要在类上添加 @Component 或 @Service 注解,调用目标字符串格式为:beanName.methodName('param')。
  • Class类调用示例: 直接调用类和方法,调用目标字符串格式为:packageName.className.methodName('param')。
/**
 * 定时任务调度测试
 * 
 * @author ruoyi
 */
@Component("ryTask")
public class RyTask
{
    /**
     * 带多个参数的方法
     * 
     * @param s 字符串类型
     * @param b 布尔类型
     * @param l 长整型
     * @param d 浮点型
     * @param i 整型
     */
    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
    {
        System.out.println(String.format("执行多参方法:字符串类型%s,布尔类型%s,长整型%s,浮点型%s,整形%s", s, b, l, d, i));
    }

    /**
     * 带单个参数的方法
     * 
     * @param params 字符串参数
     */
    public void ryParams(String params)
    {
        System.out.println("执行有参方法:" + params);
    }

    /**
     * 无参数的方法
     */
    public void ryNoParams()
    {
        System.out.println("执行无参方法");
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

# 2. 在前端新建定时任务

通过系统监控模块的定时任务管理页面,可以新建一个定时任务。填写任务名称、任务分组、调用目标、执行表达式等信息。

  • 任务名称: 自定义任务的名称,如“定时清理日志”。
  • 任务分组: 任务分组信息,通常根据字典 sys_job_group 配置。
  • 调用目标字符串: 设置后台任务方法名称和参数,例如 ryTask.ryParams('ry')。
  • 执行表达式: Cron表达式,用于定义任务的执行时间规则。
  • 执行策略: 选择任务的执行策略,如立即执行、执行一次或放弃执行。
  • 并发执行: 指定是否允许任务并发执行。
  • 状态: 任务的启用或禁用状态。
  • 备注: 任务的描述信息。

# 3. 执行一次测试

配置完成后,可以通过前端界面点击“执行一次”按钮,测试定时任务是否配置成功。如果任务执行正常,并且调度日志记录正确,则表示任务配置成功。

# 二、Cron表达式详解

Cron表达式用于定义任务的执行时间规则,其语法如下:

[秒] [分] [小时] [日] [月] [周] [年]
1
  • 秒: 0-59
  • 分: 0-59
  • 小时: 0-23
  • 日: 1-31
  • 月: 1-12 或 JAN-DEC
  • 周: 1-7 或 SUN-SAT
  • 年: 1970-2099(可选)

# 常见Cron表达式示例

表达式 说明
0 0 2 1 * ? * 每月1日凌晨2点执行一次
0 15 10 ? * MON-FRI 每周一至周五上午10:15执行
0 0 10,14,16 * * ? 每天上午10点、下午2点、4点执行
0 0/30 9-17 * * ? 每天9点到17点,每半小时执行一次
0 0 12 ? * WED 每周三中午12点执行
0 15 10 L * ? 每月最后一日的上午10:15执行
0 0/5 14,18 * * ? 每天下午2点到2:55,每5分钟执行一次

# 三、定时任务的执行策略与参数类型

# 1. 执行策略详解

  • 立即执行: 所有错过的任务(misfire)会立即执行。例如,系统在10:15恢复,那么9点和10点的任务会立即执行。
  • 执行一次: 合并错过的任务,只执行一次。例如,系统在10:15恢复,只会执行一次错过的任务,之后按照正常时间执行下一个周期任务。
  • 放弃执行: 忽略所有错过的任务,直接执行下一个周期的任务。

# 2. 方法参数类型详解

在调用目标字符串中,可以使用不同类型的参数:

  • 字符串: 需要使用单引号包裹,如:ryTask.ryParams('ry')
  • 布尔类型: 使用 true 或 false 表示,如:ryTask.ryParams(true)
  • 长整型: 使用 L 后缀,如:ryTask.ryParams(2000L)
  • 浮点型: 使用 D 后缀,如:ryTask.ryParams(316.50D)
  • 整型: 直接使用数字表示,如:ryTask.ryParams(123)

# 四、定时任务的管理与监控

若依框架提供了方便的Web界面,用于管理定时任务。开发者可以通过系统监控模块,对定时任务进行以下操作:

  • 新增任务: 添加新的定时任务。
  • 编辑任务: 修改现有任务的配置,如执行时间、调用目标等。
  • 删除任务: 删除不再需要的任务。
  • 暂停/启动任务: 控制任务的执行状态。
  • 立即执行: 手动立即执行一次任务。
  • 日志查看: 查看任务的执行日志,了解任务的执行情况和错误信息。

# 五、多模块支持与数据库配置

若依框架的定时任务模块位于 ruoyi-quartz 模块,支持多模块的业务逻辑。开发者可以根据项目需求,自行调整或剔除不需要的模块。

# 数据库支持

若依框架的定时任务模块支持多种数据库,如MySQL、Oracle等。不同数据源的定时任务都有对应的脚本,开发者可以根据需要自行下载和执行。

# 六、总结

通过若依框架的定时任务模块,开发者可以轻松实现和管理各种定时任务。该模块不仅提供了强大的定时任务调度功能,还通过友好的Web界面,使得任务的管理更加便捷。开发者可以通过简单的配置,完成复杂的定时任务调度,极大地提高了开发效率。

  • 定时任务的定义与配置: 通过简单的注解和配置,即可实现复杂的定时任务。
  • Cron表达式的使用: 通过Cron表达式,可以灵活地定义任务的执行时间规则。
  • 任务的管理与监控: 通过Web界面,轻松管理和监控定时任务的执行情况。
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
代码生成功能
系统接口文档生成

← 代码生成功能 系统接口文档生成→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式