美文网首页
Quartz---任务调度框架

Quartz---任务调度框架

作者: huangdoudoudou | 来源:发表于2017-08-23 21:42 被阅读0次

    在研究公司项目的时候,发现定时任务的实现是用Spring集成Quartz框架来做的。于是就开始了新一波的学习……

    一、基本概念

    官方介绍:

    Quartz is arichly featured,open source job scheduling library that can be integrated within virtually any Java application - from the smallest stand-alone application to the largest e-commerce system. Quartz can be used to create simple or complex schedules for executing tens, hundreds, or even tens-of-thousands of jobs; jobs whose tasks are defined as standard Java components that may execute virtually anything you may program them to do. The Quartz Scheduler includes many enterprise-class features, such as support for JTA transactions and clustering.

    简单来说,Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。你可以执行任何你想要执行的任务,比如每天定时给小姐姐或小哥哥发一封想念的邮件。

    二、quartz的下载

    (1)下载jar包

    http://www.quartz-scheduler.org/downloads/  官网链接  请叫我贴心的小姐姐(认真脸)

    (2)用maven依赖引入

    三、简单介绍

    quart主要有三个核心模块:Scheduler、Job、Trigger

    (1) Job

    Job就是你要实现的任务类,需要实现org.quartz.job接口,且只需实现接口定义的execute()方法。

    (2) Trigger

    Trigger执行任务的触发器,比如上面所说的你想每天准点给小姐姐或者小哥哥发一封邮件,Trigger将根据你设置的时间执行该任务。Trigger主要包含两种SimpleTrigger和CronTrigger两种。

    (3) Scheduler

    Scheduler为任务的调度器,它会将任务job及触发器Trigger整合起来,负责基于Trigger设定的时间来执行Job。

    四、举个栗子

    1.maven引入依赖

    2.创建任务类

    public class SendEmailJob implements Job {

    @Override

    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {

    System.out.println("I want to say ……");

    }

    }

    3.主代码

    public class QuartzTest {

    public static void main(String args[]) throws Exception {

    // 创建任务

    JobDetail jobDetail = JobBuilder.newJob(SendEmailJob.class)    //要执行的任务

    .withIdentity("hello", "hello")          //名称与组名组成Scheduler中任务的唯一标识

    .build();

    //创建Trigger

    SimpleTrigger trigger = TriggerBuilder.newTrigger()

    .withIdentity("hi", "hi")        //名称与组名组成Scheduler中Trigger的唯一标识

    .withSchedule(

    SimpleScheduleBuilder.simpleSchedule()      //创建SimpleTrigger

    .withIntervalInSeconds(10)          //每隔十秒运行一次

    .repeatForever())                  //重复

    .build();

    //创建调度器

    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

    //调度任务

    scheduler.scheduleJob(jobDetail,trigger);

    // 开启调度器

    scheduler.start();

    Thread.sleep(60000);

    //关闭调度器

    scheduler.shutdown();

    }

    }

    4.运行结果

    I want to say ……

    I want to say ……

    I want to say ……

    I want to say ……

    I want to say ……

    I want to say ……

    I want to say ……

    上面的栗子简单的说明了Quartz的基本使用方式。后续将会继续研究Quartz的使用,以及Spring集成Quartz的方法。

    相关文章

      网友评论

          本文标题:Quartz---任务调度框架

          本文链接:https://www.haomeiwen.com/subject/oartrttx.html