`

Quartz快速入门(zt)

阅读更多

转帖地址:http://www.importnew.com/4107.html

英文原文: Quartz Scheduler  编译:ImportNew - 唐小娟

 

欢迎来到这个Quartz快速入门的教程。我们今天会介绍的有以下内容:

在你更熟悉Quartz任务调度器了之后,你可以看看更多更高级的功能,譬如企业级应用的功能,让job和trigger运行在Terracotta客户端中,而不是随意选择的客户端。

下载和安装

首先,下载最近的最稳定的版本,可以跳过注册画面。解压缩安装,这样你的应用程序可以使用Quartz。

Quartz Jar文件

Quartz包中有很多jar,在根目录中。最主要的一个库叫作quartz-all-xxx.jar(xxx是版本号)。为了使用Quartz,你需要把这个jar放在你应用程序的classpath里。

你下载完之后,解压缩包,将quartz-all-xxx.jar这个文件取出来,放到任何你喜欢的地方。

因为我主要将Quartz用在应用服务器的环境中,所以我希望将Quartz jar放在我的程序中(也就是.ear或者.war中)。然而,如果希望多个应用都能使用Quartz,那么就放在你的应用服务器的classpath下吧。如果你只希望有一个独立的应用,那么就放在这个应用的classpath中,和其他的jar放在一起。

Quartz需要依赖很多第三方的库(以jar的形式),这些jar都放在了lib目录下,要使用所有的功能的话,你需要将所有的jar都放在classpath中。而如果你是建立一个独立的应用,建议你将所有的jar都放在classpath下。但若是在应用服务器的环境下,你可能已经包含其中某些jar了,这时就需要你进行取舍了,确定将什么版本的jar放到classpath下。

在应用服务器的环境下,你需要注意可能会有一些奇怪的结果,是由于你包含了同一个jar的不同版本。例如,Weblogic包含了J2EE的实现,但是不同于servlet.jar。所以,你最好将servlet.jar从classpath中移出来,以便知道真正用到了哪些类。

Properties文件

Quartz使用quartz.properties作为配置文件。你需要进行一些基本的配置,并将其放入classpath下。

再说一次,还是看你是什么环境。我个人而言用WebLogic,所以我将所有的配置文件(包括quartz.properties)放在应用程序根文件夹下。当我将所有的程序都打包到.ear时,这些配置文件都打包到.jar文件里,并包含在最后的.ear文件中。这将自动将quartz.properties文件包含在classpath下。

如果你的应用是.war,那么你可能要将quartz.properties放在WEB-INF/classes文件架下。

配置Quartz

配置是最重要的部分。Quartz是一个配置性很强的应用,最好的配置方法就是修改quartz.properties。

在解压缩包里已经含有了一些配置文件的范例,你可以查看examples/ 文件夹。不过我建议你创建你自己的quartz.properties,而不是直接拷贝范例文件然后删掉你不要的配置。创建你自己的配置文件能让你学到更多的东西.

查看所有有关配置的文档,请查看Quartz配置参考文档

最基本的配置文件quartz.properties如下:

1
2
3
org.quartz.scheduler.instanceName = MyScheduler
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

这个配置有如下含义:

  • org.quartz.scheduler.instanceName – 调度器的名字是”MyScheduler”。
  • org.quartz.threadPool.threadCount – 在线程池中有三个线程。这就意味着最多有3个job可以同时运行。
  • org.quartz.jobStore.class – 所有的Quartz的数据保存在内存中(而不是数据库中)。尽管可能你有数据库,并且希望配合Quartz一起使用。但我仍旧建议你首先使用RAMJobStore,再去接触数据库。

启动一个示例程序

现在是时候启动程序了。下面的代码包含了一个调度器,首先启动它,然后关闭它。

QuartzTest.java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
import static org.quartz.JobBuilder.*;
import static org.quartz.TriggerBuilder.*;
import static org.quartz.SimpleScheduleBuilder.*;
 
public class QuartzTest {
 
    public static void main(String[] args) {
 
        try {
            // Grab the Scheduler instance from the Factory
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
 
            // and start it off
            scheduler.start();
 
            scheduler.shutdown();
 
        } catch (SchedulerException se) {
            se.printStackTrace();
        }
    }
}

一旦你通过StdSchedulerFactory.getDefaultScheduler()获得了一个调度器,你的程序会一直运行,直到调用scheduler.shutdown()方法。

注意还有一些import static ...,下面的代码你会见到它们的作用。

如果你没有设置好logging输出日志,所有的日志都回输出到控制台,可能如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[INFO] 21 Jan 08:46:27.857 AM main [org.quartz.core.QuartzScheduler]
Quartz Scheduler v.2.0.0-SNAPSHOT created.
 
[INFO] 21 Jan 08:46:27.859 AM main [org.quartz.simpl.RAMJobStore]
RAMJobStore initialized.
 
[INFO] 21 Jan 08:46:27.865 AM main [org.quartz.core.QuartzScheduler]
Scheduler meta-data: Quartz Scheduler (v2.0.0) 'Scheduler' with instanceId 'NON_CLUSTERED'
  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
  NOT STARTED.
  Currently in standby mode.
  Number of jobs executed: 0
  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 50 threads.
  Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
 
[INFO] 21 Jan 08:46:27.865 AM main [org.quartz.impl.StdSchedulerFactory]
Quartz scheduler 'Scheduler' initialized from default resource file in Quartz package: 'quartz.properties'
 
[INFO] 21 Jan 08:46:27.866 AM main [org.quartz.impl.StdSchedulerFactory]
Quartz scheduler version: 2.0.0
 
[INFO] 21 Jan 08:46:27.866 AM main [org.quartz.core.QuartzScheduler]
Scheduler Scheduler_$_NON_CLUSTERED started.
 
[INFO] 21 Jan 08:46:27.866 AM main [org.quartz.core.QuartzScheduler]
Scheduler Scheduler_$_NON_CLUSTERED shutting down.
 
[INFO] 21 Jan 08:46:27.866 AM main [org.quartz.core.QuartzScheduler]
Scheduler Scheduler_$_NON_CLUSTERED paused.
 
[INFO] 21 Jan 08:46:27.867 AM main [org.quartz.core.QuartzScheduler]
Scheduler Scheduler_$_NON_CLUSTERED shutdown complete.

你可以在start()和shutdown()之间添加你想要完成的工作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// define the job and tie it to our HelloJob class
JobDetail job = newJob(HelloJob.class)
    .withIdentity("job1", "group1")
    .build();
 
// Trigger the job to run now, and then repeat every 40 seconds
Trigger trigger = newTrigger()
    .withIdentity("trigger1", "group1")
    .startNow()
    .withSchedule(simpleSchedule()
            .withIntervalInSeconds(40)
            .repeatForever())           
    .build();
 
// Tell quartz to schedule the job using our trigger
scheduler.scheduleJob(job, trigger);

(也许你需要在调用shutdown()之前一段时间,以便job可以被顺利触发和执行。例如,你可以增加一行代码Thread.sleep(60000))。

现在执行它吧。

 

英文原文: Quartz Scheduler  编译:ImportNew - 唐小娟

本文链接:http://www.importnew.com/4107.html

【如需转载,请在正文中标注并保留原文链接、译文链接和译者等信息,谢谢合作!】

 

关于作者: 唐小娟

分享到:
评论

相关推荐

    Quartz框架快速入门

    ### Quartz框架快速入门详解 #### 一、Quartz框架简介 Quartz是一个开源的作业调度框架,用于开发Java应用程序。它提供了强大的触发器(Trigger)机制用于关联作业(Job),同时还具备灵活的表达式用于配置定时...

    Quartz 框架快速入门

    Quartz 框架快速入门 在前面两篇文章中简单介绍了在java应用程序中如何使用Quartz框架,这一篇中我们将看到如何在web环境下通过配置文件来完成Quartz的后台作业调度,而不必手工去创建Trigger和Scheduler

    Quartz 框架快速入门(一)

    NULL 博文链接:https://wangrl.iteye.com/blog/1125327

    quartz scheduler 入门教程

    quartz scheduler 入门教程 Quartz Scheduler 是一种功能丰富、开源的任务调度程序库,可以在任何 Java 程序中使用。它可以用来创建简单或者复杂的执行次数可以达成千上万的任务。任务可以是任何 Java 可以做的事情...

    quartz实例,quartz入门例子

    在这个Quartz入门例子中,可能包含了一个名为`QuarzTest`的类或配置文件,它是实际运行的入口。通过分析和运行这个例子,你可以了解到如何在Spring中配置和使用Quartz,以及如何创建和调度Job。 学习Quartz时,你...

    Quartz详细入门教程

    非常详细的Quartz详细入门教程。新手值得一看,高手请忽略。

    Quartz详细入门教程.zip

    Quartz详细入门教程.zip

    Quartz框架快速入门.pdf

    Quartz框架是一款强大的开源任务调度库,广泛应用于Java环境下的定时任务管理。要开始使用Quartz,首先需要在项目中引入必要的依赖。基础依赖是quartz-<version>.jar,这是Quartz的核心库。除此之外,根据你的需求,...

    Quartz定时器从入门到进阶

    这有助于开发者快速上手并深入了解Quartz的各种功能和配置选项。 Quartz内部架构由多个关键组件组成,包括调度器(Scheduler)、作业(Job)、触发器(Trigger)等。调度器负责管理作业和触发器,根据预设的调度...

    Quartz中文入门教程

    Quartz中文入门教程 前言 Quartz让任务调度简单 Quartz的发展史 上手Quartz Quartz内部架构 作业 作业管理和存储 有效作业存储 作业和触发器 调度一个作业 用调度器(Scheduler)调用你的作业 编程调度...

    Quartz_框架快速入门

    本文将引导您快速入门 Quartz 框架,了解其基本使用方法。 首先,要开始使用 Quartz,您需要从官方网站下载对应的 JAR 包,通常为 quartz-<version>.jar。除此之外,根据您的需求,Quartz 可能还需要一些第三方库,...

    Quartz2.2.1入门实例

    Quartz概述及入门实例,具体过程和效果看博文 http://blog.csdn.net/evankaka/article/details/45361469

    Quartz如何从入门到精通.pdf

    Quartz入门到精通 Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如...

    Quartz如何从入门到精通

    Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。

    Quartz任务调度快速入门

    ### Quartz任务调度快速入门知识点详解 #### 一、Quartz框架简介 Quartz是一个功能强大的开源作业调度框架,被广泛应用于Java应用中实现任务的定时调度。Quartz通过对任务调度领域的核心问题进行高度抽象,提炼出...

    Quartz调度任务学习(快速开发入门)(转)

    Quartz调度任务学习(快速开发入门),帮助你快速掌握Quartz的开发,使用性较强

Global site tag (gtag.js) - Google Analytics