zoukankan      html  css  js  c++  java
  • Quratz入门

    一:介绍

    1.应用场景

      基本上任何公司都会用到调度这个功能, 比如我们公司需要定期执行调度生成报表, 或者比如博客什么的定时更新之类的,都可以靠Quartz来完成。正如官网所说,小到独立应用大到大型电子商务网站, Quartz都能胜任。

    2..内部组件结构 

      Quartz拥有完善的事件和监听体系,大部分组件都拥有事件,如任务执行前事件、任务执行后事件、触发器触发前事件、触发后事件、调度器开始事件、关闭事件等等,可以注册相应的监听器处理感兴趣的事件。

      下图描述了Scheduler的内部组件结构,SchedulerContext提供Scheduler全局可见的上下文信息,每一个任务都对应一个JobDataMap,虚线表达的JobDataMap表示对应有状态的任务:

      

      

    二:普通触发器程序(来自官网)

    1.新建maven项目

      

    2.pom文件

      这个版本是2.2.1的maven库。

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     5     <modelVersion>4.0.0</modelVersion>
     6 
     7     <groupId>Quratz</groupId>
     8     <artifactId>job</artifactId>
     9     <version>1.0-SNAPSHOT</version>
    10     <dependencies>
    11         <dependency>
    12             <groupId>org.quartz-scheduler</groupId>
    13             <artifactId>quartz</artifactId>
    14             <version>2.2.1</version>
    15         </dependency>
    16         <dependency>
    17             <groupId>org.quartz-scheduler</groupId>
    18             <artifactId>quartz-jobs</artifactId>
    19             <version>2.2.1</version>
    20         </dependency>
    21     </dependencies>
    22 
    23 </project>

    3.JobDetail代码

     1 import org.quartz.Job;
     2 import org.quartz.JobExecutionContext;
     3 import org.quartz.JobExecutionException;
     4 
     5 public class MyJob implements Job {
     6     public MyJob(){}
     7     public void execute(JobExecutionContext context)throws JobExecutionException{
     8         System.err.println("Hello World!  MyJob is executing.");
     9     }
    10 }

    4.设置触发器

     1 import org.quartz.*;
     2 import org.quartz.impl.StdSchedulerFactory;
     3 
     4 import static org.quartz.JobBuilder.newJob;
     5 import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
     6 
     7 public class SchedulerTest {
     8 
     9     public static void main(String[] args)throws Exception{
    10         Scheduler scheduler=null;
    11         SchedulerFactory schedulerfactory = new StdSchedulerFactory();
    12         scheduler = schedulerfactory.getScheduler();
    13         // define the job and tie it to our MyJob class
    14         JobDetail job = newJob(MyJob.class)
    15                 .withIdentity("job1", "group1")
    16                 .build();
    17 
    18         // Trigger the job to run now
    19         Trigger trigger = TriggerBuilder.newTrigger()
    20                 .withIdentity("trigger1", "group1")
    21                 .startNow()
    22                 .withSchedule(simpleSchedule()
    23                         .withIntervalInSeconds(5)
    24                         .repeatForever())
    25                 .build();
    26 
    27         // Tell quartz to schedule the job using our trigger
    28         scheduler.scheduleJob(job, trigger);
    29         // 启动调度
    30         scheduler.start();
    31 
    32         Thread.sleep(100);
    33 
    34         // 停止调度
    35 //        scheduler.shutdown();
    36     }
    37 }

    5.效果

      

    三:Cron触发程序

    1.cron表达式触发器

     1 import org.quartz.*;
     2 import org.quartz.impl.StdSchedulerFactory;
     3 
     4 import static org.quartz.JobBuilder.newJob;
     5 import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
     6 
     7 public class SchedulerCronTest {
     8 
     9     public static void main(String[] args)throws Exception{
    10         Scheduler scheduler=null;
    11         SchedulerFactory schedulerfactory = new StdSchedulerFactory();
    12         scheduler = schedulerfactory.getScheduler();
    13         // define the job and tie it to our MyJob class
    14         JobDetail job = newJob(MyJob.class)
    15                 .withIdentity("job1", "group1")
    16                 .build();
    17 
    18         // Trigger the job to run now, and then repeat every 40 seconds
    19         Trigger trigger = TriggerBuilder.newTrigger()
    20                 .withIdentity("trigger1", "group1")
    21                 .startNow()
    22                 .withSchedule(CronScheduleBuilder.cronSchedule("*/5 * * * * ?"))
    23                 .build();
    24 
    25         // Tell quartz to schedule the job using our trigger
    26         scheduler.scheduleJob(job, trigger);
    27         // 启动调度
    28         scheduler.start();
    29 
    30         Thread.sleep(100);
    31 
    32         // 停止调度
    33 //        scheduler.shutdown();
    34     }
    35 }

    7.效果

      

  • 相关阅读:
    Selenium入门15 截图
    selenium入门14 窗口切换
    Locust的官网及安装
    命令行输入Jmeter提示不是内部或外部命令,处理方式:添加环境变量
    python pip安装报错python setup.py egg_info failed with error code 1
    Selenium入门13 cookie的增删改查
    Selenium入门12 鼠标和键盘事件
    Selenium入门11 滚动条控制(通过js)
    Selenium入门10 弹出框的处理 switch_to.alert
    Selenium入门9 上传文件
  • 原文地址:https://www.cnblogs.com/juncaoit/p/8644791.html
Copyright © 2011-2022 走看看