QuartZ 快速入门

本文章是基于 QuartZ2.x的Document编写的.


1.下载QuartZ.jar

下载地址:http://www.quartz-scheduler.org/downloads/

或者去Maven 搜索进行下载.

2.安装QuartZ.jar

QuartZ有许多Jar包,主要的jar包为quartz-all-xxx.jar,导入到自己的依赖中.就可以使用基础功能了.

3.配置QuartZ

配置文件必须要放在classpath下.建议的名称为quartz.properties

如果你构建的是一个web应用程序,那么你得把配置文件放入在WEB-INF/classes文件夹中.

IDE默认都会导入.

3.1 配置

完整的配置文件在: http://www.quartz-scheduler.org/documentation/quartz-2.x/configuration/

这里只列出一些 我项目中用到得配置和官方文档中的配置.

官方文档:

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

解释:这个字段对于调度程序本身是没有任何意义,如果你使用集群功能,

则必须在'逻辑'相同的调度程序中对集群中的每个实例使用相同的名称

org.quartz.threadPool.threadCount

设置线程池中的线程数量.

org.quartz.jobStore.class

所有的quartz数据(工作和触发器的细节),都是存放在内存中的,即使你使用了数据库,

官方建议在数据库工作之前通过RAMJobStore获取Quartz working,

项目中的配置

#===============================================================
#调度器属性
#===============================================================
org.quartz.scheduler.instanceName=AAAAAA
#可以使任意字符,但对于调度器来说必须唯一,因为在集群中相当于逻辑调度器,
#使用AUTO,则quartz会自动帮你生成,或者使用SYS_PROP
#如何你希望该值来自于系统属性,请看这里org.quartz.scheduler.instanceId
org.quartz.scheduler.instanceId=AUTO


#===============================================================
#作业存储设置
#===============================================================
#使用聚类功能,如果你有多个quartz的实例使用相同的一组数据库表,这个属性必须为true
org.quartz.jobStore.isClustered=true
#集群检测间隔
org.quartz.jobStore.clusterCheckinInterval=15000
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreCMT
#数据库驱动委托类
#选择你使用的数据库的方言
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.DB2v8Delegate
#表名前缀
#quartz表在数据库穿件的前缀.
org.quartz.jobStore.tablePrefix=I2_TMM_
#不要设置自动提交为false
#意思就是自动提交
#控制的是setAutoCommit(false);
org.quartz.jobStore.dontSetAutoCommitFalse=true
#产生锁的处理程序.
#用于生成在作业存储数据上锁定控件的对象实例的类名
org.quartz.jobStore.lockHandler.class=org.quartz.impl.jdbcjobstore.StdRowLockSemaphore
#数据源
org.quartz.jobStore.dataSource=timerManager
#非托管的文本数据源
org.quartz.jobStore.nonManagedTXDataSource=timerManager_nonxa
#数据库数据源,你的应用程序服务器拖得的JNDI的URL
org.quartz.dataSource.timerCustomer.jndiURL=java:comp/env/jdbc/manager
org.quartz.dataSource.timerCustomer_nonxa.jndiURL=java:comp/env/jdbc/manager


#===============================================================
#线程池属性
#===============================================================
#你使用的线程池的名字,建议使用:org.quartz.simpl.SimpleThreadPool
#它基本上能满足所有的用户需求,提供一个固定大小的线程池,
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
#线程池线程的数量
org.quartz.threadPool.threadCount=5
#线程的优先级 默认是5, 可选值是1-10
org.quartz.threadPool.threadPriority=5

4.简单示例

import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;

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();
        }
    }
}
上面是一个启动和关闭的实现.

一旦你获取了一个调度器,你的应用程序将不会被终止,知道你的程序调用shutdown()方法.

因为它的线程还在工作.

你可以查控制台查看输出.

让我们在start()和shutdown中间加入一点代码

        // 定义一个job,并和newJob相关联
        JobDetail job = newJob(HelloJob.class)
            .withIdentity("job1", "group1")
            .build();

        // 触发作业现在运行, 然后每个40秒调用一次.
        Trigger trigger = newTrigger()
            .withIdentity("trigger1", "group1")
            .startNow()
            .withSchedule(simpleSchedule()
                    .withIntervalInSeconds(40)
                    .repeatForever())            
            .build();

        // Tell quartz to schedule the job using our trigger 告诉quartz去触发作业
        sched.scheduleJob(job, trigger);



5.高级应用

以后完善


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值