QuartZ 快速入门
来源:互联网 发布:javascript报表工具 编辑:程序博客网 时间:2024/06/05 05:03
本文章是基于 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 = MySchedulerorg.quartz.threadPool.threadCount = 3org.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.高级应用
以后完善
- Quartz(01) Quartz快速入门
- Quartz快速入门指南
- Quartz教程:快速入门
- 定时器(Quartz)快速入门
- Quartz教程:快速入门
- Quartz 快速入门指南
- quartz快速入门
- QuartZ 快速入门
- 定时器(Quartz)快速入门
- Quartz快速入门
- quartz快速入门(一)
- Quartz快速入门指导
- Quartz教程--快速入门
- Quartz任务调度快速入门
- 调度框架Quartz快速入门
- Quartz任务调度快速入门
- Quartz任务调度快速入门
- Quartz任务调度快速入门
- HTML5粒子特效
- Java后台开发精选知识图谱
- 常用CSS片段
- SMO计算思路
- JavaScript:Getting Started
- QuartZ 快速入门
- linux下 驱动模块编译步骤
- 即时通讯框架T-io之WebSocket协议再之HelloWorld
- C++创建名称带空格的文件夹
- 第三天node.js,路由与中间件及 项目的搭建
- 程序员必须掌握的600个英语单词
- 使用Qt5.9开发UWP程序点击运行报错
- 换个角度理解C语言getchar()、getch()、scanf()函数
- 记录:接下来需要学习的知识