开发喵星球

若依定时任务使用流程(202)

定时任务是 Web 应用中不可或缺的一部分。它们可应用于多种场景,如视频网站会员每日成长值奖励、每月电影券发放,保证最终一致性的数据比对,定期报表生成和邮件发送,以及数据清理等。

若依为了更好管理这些定时任务,提供友好的 Web 界面。通过该界面,开发者可动态控制任务的启动、暂停、重启、删除、添加和修改等操作,大幅提高开发效率。

1、后台添加定时任务处理类(支持Bean调用、Class类调用)

  • Bean调用示例:需要添加对应Bean注解@Component或@Service。调用目标字符串
  • ryTask.ryParams('ry')

  • Class类调用示例:添加类和方法指定包即可。调用目标字符串:

  • com.ruoyi.quartz.task.RyTask.ryParams('ry')
/**
 * 定时任务调度测试
 * 
 * @author ruoyi
 */
@Component("ryTask")
public class RyTask
{
    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
    {
        System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
    }

    public void ryParams(String params)
    {
        System.out.println("执行有参方法:" + params);
    }

    public void ryNoParams()
    {
        System.out.println("执行无参方法");
    }
}

2、前端新建定时任务信息(系统监控 -> 定时任务)


  • 任务名称:自定义,如:定时查询任务状态
  • 任务分组:根据字典sys_job_group配置
  • 调用目标字符串:设置后台任务方法名称参数
  • 执行表达式:可查询官方cron表达式介绍
  • 执行策略:定时任务自定义执行策略
  • 并发执行:是否需要多个任务间同时执行
  • 状态:是否启动定时任务
  • 备注:定时任务描述信息

3、点击执行

测试定时任务是否正常及调度日志是否正确记录,如正常执行表示任务配置成功。

4、详细配置说明

4.1 执行策略详解:

立即执行(所有misfire的任务会马上执行)打个比方,如果9点misfire了,在10:15系统恢复之后,9点,10点的misfire会马上执行
执行一次(会合并部分的misfire,正常执行下一个周期的任务)假设9,10的任务都misfire了,系统在10:15分起来了。只会执行一次misfire,下次正点执行。
放弃执行(所有的misfire不管,执行下一个周期的任务)

4.2 方法参数详解:

  1. 字符串(需要单引号”标识 如:ryTask.ryParams(’ry’))
  2. 布尔类型(需要true false标识 如:ryTask.ryParams(true))
  3. 长整型(需要L标识 如:ryTask.ryParams(2000L))
  4. 浮点型(需要D标识 如:ryTask.ryParams(316.50D))
  5. 整型(纯数字即可)

4.3 cron表达式语法:

[秒] [分] [小时] [日] [月] [周] [年]
说明 必填 允许填写的值 允许的通配符
0-59 , – * /
0-59 , – * /
0-23 , – * /
1-31 , – * /
1-12 / JAN-DEC , – * ? / L W
1-7 or SUN-SAT , – * ? / L #
1970-2099 , – * /

4.4 通配符说明

  1. *:代表所有可能的值
  2. -:指定范围
  3. ,:列出枚举 例如在分钟里,”5,15″表示5分钟和20分钟触发
  4. /:指定增量 例如在分钟里,”3/15″表示从3分钟开始,没隔15分钟执行一次
  5. ?:表示没有具体的值,使用?要注意冲突
  6. L:表示last,例如星期中表示7或SAT,月份中表示最后一天31或30,6L表示这个月倒数第6天,FRIL表示这个月的最后一个星期五
  7. W:只能用在月份中,表示最接近指定天的工作日
  8. #:只能用在星期中,表示这个月的第几个周几,例如6#3表示这个月的第3个周五

4.5 常用表达式例子

表达式 说明
0 0 2 1 * ? * 表示在每月的1日的凌晨2点调整任务
0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业
0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作
0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午12点
0 0 12 * * ? 每天中午12点触发
0 15 10 ? * * 每天上午10:15触发
0 15 10 * * ? 每天上午10:15触发
0 15 10 * * ? * 每天上午10:15触发
0 15 10 * * ? 2005 2005年的每天上午10:15触发
0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发
0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发
0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发
0 15 10 ? * MON-FRI 周一至周五的上午10:15触发
0 15 10 15 * ? 每月15日上午10:15触发
0 15 10 L * ? 每月最后一日的上午10:15触发
0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发
0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发
0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发

注意:不同数据源定时任务都有对应脚本,OracleMysql已经有了,其他的可自行下载执行

   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-05-09 21:35:17 阅读量:136
<<   >>


powered by kaifamiao