04.Quartz 触发器

余生颓废 提交于 2019-11-28 18:18:48

Quartz 触发器分为两种SimpleTrigger 和 CronTrigger, SimplerTrigger 适用于以固定时间间隔执行重复N次或延时执行一次的定时任务, CronTrigger 适用于按照日历规则来执行定时任务, 如每月最后一天触发一次, 每周一触发一次等.

1. 核心API

quartz 提供了一组API, 用于快捷地创建SimpleTrigger或CronTrigger:

  • TriggerBuilder: 用于构建触发器, 可以设置公有属性:触发器名称, 描述信息, 开始调度时间, 结束时间等
  • DateBuilder: 时间工具类, 可便捷设置触发器开始调度时间和结束调度时间.
  • SimpleScheduleBuilder: 用于构建simple触发器, 需要设置重复间隔, 重复次数
  • CronScheduleBuilder: 用于构建cron触发器, 需要设置cron 表达式

2. 触发器创建实例

2.1 创建SimpleTrigger

SimpleTrigger 创建时, 需指定定时任务间隔和重复次数.

Trigger trigger1 = TriggerBuilder.newTrigger()
        .withIdentity("trigger1", "simpTrigger")
        .withDescription("每隔3秒触发一次, 共触发10次, 立刻执行")
        .withSchedule(SimpleScheduleBuilder.simpleSchedule()
        .withIntervalInSeconds(3000)
        .withRepeatCount(10))
        .startNow()
        .build();

Trigger trigger2 = TriggerBuilder.newTrigger()
        .withIdentity("trigger2", "simpTrigger")
        .withDescription("5分钟后开始, 每隔一小时执行一次, 明天零点结束")
        .withSchedule(SimpleScheduleBuilder.simpleSchedule()
        .withRepeatCount(1000 * 60 * 24)
        .repeatForever())
        .startAt(DateBuilder.futureDate(5, DateBuilder.IntervalUnit.MINUTE))
        .endAt(DateBuilder.tomorrowAt(0, 0 , 0))
        .build();

2.2 创建CronTrigger

CronTrigger 创建比较简单, 只需要设置cron表达式即可.

Trigger trigger1 = TriggerBuilder.newTrigger()
                .withIdentity("trigger1", "cronTrigger")
                .withDescription("每隔3秒触发一次, 立刻执行")
                .withSchedule(CronScheduleBuilder.cronSchedule("*/3 * * * * ?"))
                .startNow()
                .build();
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!