首页 > 其他 > 详细

Quartz的学习记录

时间:2020-02-11 13:26:45      阅读:75      评论:0      收藏:0      [点我收藏+]

首先写一个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 可以被实例化,作为独立的项目集群(负载平衡和故障转移功能),用于作业的执行。


 

 




Quartz的学习记录

原文:https://www.cnblogs.com/aliceQin/p/12294533.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!