Quartz的学习记录

二次信任 提交于 2020-02-11 13:59:00

首先写一个Quartz的简单例子:

1.新建一个maven项目,pom.xml中加入quartz的依赖:

<dependency>  <groupId>org.quartz-scheduler</groupId>  <artifactId>quartz</artifactId>  <version>2.3.2</version></dependency>

2.新建quartz.properties文件,放在classpath下,添加如下配置:

#此调度程序的名称将为“MyScheduler”org.quartz.scheduler.instanceName = MyScheduler #线程池中有3个线程,这意味着最多可以同时运行3个job。org.quartz.threadPool.threadCount = 3#quartz的所有数据,包括job和trigger的配置,都会存储在内存中(而不是数据库里)org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

3.新建一个类继承org.quartz.Job:

import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import java.text.SimpleDateFormat;import java.util.Date;public class QuartzJob implements Job {    @Override    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {        Date date = new Date();        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        System.out.println(sdf.format(date));    }}

4.创建Scheduler执行任务:

import com.quartzdemo.QuartzJob;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.SchedulerException;import org.quartz.Trigger;import org.quartz.impl.StdSchedulerFactory;import static org.quartz.JobBuilder.newJob;import static org.quartz.SimpleScheduleBuilder.simpleSchedule;import static org.quartz.TriggerBuilder.newTrigger;public class QuartzTest {    public static void main(String[] args) {        try {            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();            scheduler.start();            JobDetail job = newJob(QuartzJob.class).withIdentity("job1","group1").build();            Trigger trigger = newTrigger().withIdentity("trigger1","group1")                    .startNow()                    .withSchedule(simpleSchedule()                    .withIntervalInSeconds(1)                    .repeatForever())                    .build();            scheduler.scheduleJob(job,trigger);           // Thread.sleep(6000);可以指定执行多长时间后关闭Scheduler           // scheduler.shutdown();关闭Scheduler        } catch (SchedulerException | InterruptedException e) {            e.printStackTrace();        }    }}该程序会一直执行,也可以通过设置一定时间后结束执行。

5.执行结果:

 

 

 ...

 

 下面学习Quartz中比较常用到的组件:

1.Job表示一个工作,要执行的具体内容。此接口中只有一个方法,就是execute()。

2.JobDetail表示一个具体的可执行的调度程序,Job是这个可执行调度程序所要执行的内容。另外JobDetail还包含这个任务调度的方案和策略。

3.Trigger是一个调度参数的设置,什么时候去调以及多久调一次。

4.Scheduler是一个调度容器,一个调度容器中可以注册多个JobDetail和Trigger.当JobDetail和Trigger组合,就可以被Scheduler调度了。

 

Quartz的运行环境


  • Quartz 可以运行嵌入在另一个独立式应用程序。
  • Quartz 可以在应用程序服务器(或 servlet 容器)内被实例化,并且参与 XA 事务。
  • Quartz 可以作为一个独立的程序运行(其自己的 Java 虚拟机内),可以通过 RMI 使用。
  • Quartz 可以被实例化,作为独立的项目集群(负载平衡和故障转移功能),用于作业的执行。

 

 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!