用Quartz进行作业调度 - 编程入门网
// schedule a job with JobDetail and Trigger
scheduler.scheduleJob(jobDetail, cronTrigger);
// start the scheduler
scheduler.start();
}
用Quartz进行作业调度(4)时间:2011-08-26 IBM Michael Lipton高级 Quartz 如上所示,只用作业和触发器,就能访问大量的功能。但是,Quartz 是个丰 富而灵活的调度包,对于 愿意研究它的人来说,它还提供了更多功能。下一节讨论 Quartz 的一些高级特 性。 作业仓库 Quartz 提供了两种不同的方式用来把与作业和触发器有关的数据保存在内存 或数据库中。第一种方式 是 RAMJobStore 类的实例,这是默认设置。这个作业仓库最易使用,而且提供了 最佳性能,因为所有数 据都保存在内存中。这个方法的主要不足是缺乏数据的持久性。因为数据保存在 RAM 中,所以应用程序 或系统崩溃时,所有信息都会丢失。 为了修正这个问题,Quartz 提供了 JDBCJobStore。顾名思义,作业仓库通过 JDBC 把所有数据放在 数据库中。数据持久性的代价就是性能降低和复杂性的提高。 设置 JDBCJobStore 在前面的示例中,已经看到了 RAMJobStore 实例的工作情况。因为它是默认 的作业仓库,所以显然不 需要额外设置就能使用它。但是,使用 JDBCJobStore 需要一些初始化。 在应用程序中设置使用 JDBCJobStore 需要两步:首先必须创建作业仓库使用 的数据库表。 JDBCJobStore 与所有主流数据库都兼容,而且 Quartz 提供了一系列创建表的 SQL 脚本,能够简化设置 过程。可以在 Quartz 发行包的 “docs/dbTables”目录中找到创建表的 SQL 脚 本。第二,必须定义一 些属性,如表 1 所示: 表 1. JDBCJobStore 属性
清单 4 展示了 JDBCJobStore 提供的数据持久性。就像在前面的示例中一样 ,先从初始化 SchedulerFactory 和 Scheduler 开始。然后,不再需要初始化作业和触发器, 而是要获取触发器群组名 称列表,之后对于每个群组名称,获取触发器名称列表。请注意,每个现有的作 业都应当用 Scheduler.reschedule() 方法重新调度。仅仅重新初始化在先前的应用程序运行 时终止的作业,不会正 确地装载触发器的属性。 清单 4. JDBCJobStoreRunner.java
|
||||||||||||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |