一、前言
在《定时任务JOB框架之Quartz (一) Quartz入门与快速Demo搭建》文章中创建的工程只有1个JOB在执行1个定时任务,在实际的应用场景中一般的项目少则十几个定时任务,多的几十上百个不等。实际应用中不可能把所有定时任务都写到一个JOB中,那样会造成:
1、一个定时任务的故障会导致后面的定时任务无法继续执行
2、代码也不好维护,太臃肿了
3、单个JOB执行一次的耗时太长了
所以我们需要N个JOB,每一个JOB执行各自的定时任务,本文中举例2个JOB,1个JOB处理订单模块(OrderJob)的自动任务,1个JOB处理物流模块(DeliveryJob)的自动任务。在创建工程前,首先了解下Quartz几个重要的接口,如下:
Quartz的4个重要接口:
- Scheduler - 用来和调度器交互的API
- Trigger - 定义了Job运行的调度时间表
- JobDetail - 用来定义任务实例
- Job - 被调度的任务体
继承自Trigger接口的还有2个重要的接口:
- SimpleTrigger - 简单的调度时间表(很少用)
- CronTrigger - Cron表达式的调度时间表
二、创建Spring Boot工程




三、创建OrderJob和DeliveryJob类
3.1 OrderJob类
package com.ljhua.quartz2;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class OrderJob implements Job {
Logger log = LoggerFactory.getLogger(OrderJob.class);
private int count = 0;
@Override
public void execute(JobExecutionContext context) {
int curJob = count++;
JobKey jobKey = context.getJobDetail().getKey();
log.info(jobKey + "-处理逻辑-start:*** " + curJob);
log.info(jobKey + "-处理逻辑-end: *** " + curJob);
}
}
3.2 DeliveryJob类
package com.ljhua.quartz2;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public cla


9016

被折叠的 条评论
为什么被折叠?



