• Quartz入门教程


    Quartz是开源的作业调度框架,使你能在预定义的日期和时间运行任务。

    Quartz 1.6

    Quartz是强大和先进的调度框架,帮助Java开发者在指定的日期和时间运行调度作业。
    本教程教你使用Quartz 1.6.3开发调度作业。

    本示例有点过时,新版Quartz版本为 2.2.3。

    1. 下载Quartz
      可以从官网上下载Quartz,或者从Maven中央仓库。
      pom.xml文件内容:
    <dependencies>
        <!-- Quartz API -->
        <dependency>
            <groupId>opensymphony</groupId>
            <artifactId>quartz</artifactId>
            <version>1.6.3</version>
        </dependency>
    
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>
    
        <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>
    
    1. Quartz作业
      Quartz作业定义了你要运行什么任务。
      HelloJob.java文件
    public class HelloJob implements Job {
        public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
            System.out.println("Hello Quartz!");
        }
    }
    
    1. Quartz触发器
      Quartz触发器定义了Quartz何时执行你上面定义的的Quartz作业。
      有两种类型的Quartz触发器:
      SimpleTrigger - 可以设置开始时间、结束时间和重复间隔。
      CronTrigger - 可以使用Unix cron表达式指定日期和时间执行定义的工作。
      Unix cron表达式:
      Unix cron表达式具有高灵活性且功能强大,可以通过以下网址学习cron表达式。
      http://en.wikipedia.org/wiki/CRON_expression
      http://www.quartz-scheduler.org/docs/examples/Example3.html
      SimpleTrigger - 每3秒执行一次
    SimpleTrigger trigger = new SimpleTrigger();
    trigger.setName("dummyTriggerName");
    trigger.setStartTime(new Date(System.currentTimeMillis() + 1000));
    trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
    trigger.setRepeatInterval(3000);
    

    CronTrigger - 每3秒执行一次

    CronTrigger trigger = new CronTrigger();
    trigger.setName("dummyTriggerName");
    trigger.setCronExpression("0/3 * * * * ?");
    
    1. 调度器
      调度器类把Job(作业)和Trigger(触发器)连接在一起并执行。
    Scheduler scheduler = new StdSchedulerFactory().getScheduler();
    scheduler.start();
    scheduler.scheduleJob(job, trigger);
    
    1. 完整代码
      这里有两个使用Quartz完整例子,分别使用了SimpleTrigger和CronTrigger。
      SimpleTrigger实例
      每3秒执行一次,延时1秒
    public class SimpleTriggerExample {
        public static void main(String[] args) throws SchedulerException {
            JobDetail job = new JobDetail();
            job.setName("dummyJobName");
            job.setJobClass(HelloJob.class);
    
            // configure the scheduler time
            SimpleTrigger trigger = new SimpleTrigger();
            trigger.setName("dummyTriggerName");
            trigger.setStartTime(new Date(System.currentTimeMillis() + 1000));
            trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
            trigger.setRepeatInterval(3000);
    
            // schedule it
            Scheduler scheduler = new StdSchedulerFactory().getScheduler();
            scheduler.start();
            scheduler.scheduleJob(job, trigger);
        }
    }
    

    CronTrigger实例

    public class CronTriggerExample {
        public static void main(String[] args) throws SchedulerException, ParseException {
            JobDetail job = new JobDetail();
            job.setName("dummyJobName");
            job.setJobClass(HelloJob.class);
    
            // configure the scheduler time
            CronTrigger trigger = new CronTrigger();
            trigger.setName("dummyTriggerName");
            trigger.setCronExpression("0/3 * * * * ?");
    
            // schedule it
            Scheduler scheduler = new StdSchedulerFactory().getScheduler();
            scheduler.start();
            scheduler.scheduleJob(job, trigger);
        }
    }
    

    Quartz 2

    JobListener -- 创建监听类以跟踪正在运行的工作状态

    Multiple Jobs -- 声明和运行多个工作

    List All Jobs -- 列举所有存在的工作

    Trigger A Quartz Job Manually -- JSF2示例,显示所有工作并手动触发特定的工作

    如果觉得本文对您有帮助,请“打赏”,谢谢。
    您的鼓励,我的动力。
    微信 支付宝
  • 相关阅读:
    Flex 布局语法教程
    Uni-App
    springBoot框架中几个层(dto、dao、service、controller)之间的关系
    delphi Restful:客户端实现的四种方式及其比较
    Node.js安装及环境配置之Windows篇
    MySQL 8.0.18安装教程(windows 64位)
    JDK下载和安装
    【转载】G1垃圾回收器详解
    【转载】单线程Redis性能为何如此之高?
    快速开发框架天梭(Tissot)
  • 原文地址:https://www.cnblogs.com/zongzhankui/p/5903642.html
Copyright © 2020-2023  润新知