定时任务JOB框架之Quartz (二) Quartz的进阶篇-多任务JOB

一、前言

《定时任务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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值