Quartz配置资源介绍
Posted Tang.Mr
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Quartz配置资源介绍相关的知识,希望对你有一定的参考价值。
1.配置、资源SchedulerFactory
Quartz以模块方式架构,因此要使它运行。几个组件必须要很好的咬合在一起。【现在已经有了一些现成的助手可以完成这些工作】
所有scheduler实例是由SchedulerFactory创建。Quartz的三个核心概念:调度器,任务,触发器。
调度器,任务,触发器三者之间的关系为:
一个作业,比较重要的三个要素是Scheduler,JobDetail,Trigger;而Trigger对于Job而言就好比一个驱动器;没有触发器来定时驱动作业,作业就无法运行;对于Job而言,一个Job可以对应多个Trigger,但对于Trigger而言,一个Trigger只能对应一个Job;所以一个Trigger只能指派给一个Job;如果需要一个更复杂的触发计划,可以创建多个Trigger并指派他妈给同一个Job
Scheduler的创建方式
- StdSchedulerFactory
Quartz默认的SchedulerFactory
- 使用一组参数(java.util.Properties)来创建和初始化Quartz调度器
- 配置参数一般存储在quartz.properties文件中
- 调用getScheduler方法就能穿件和初始化调度器对象
SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = schedulerFactory.getScheduler();
用法一:输出调度器开始的时间
//调度器绑定任务实例和触发器,方法返回调开始执行的时间 Date date = scheduler.scheduleJob(jobDetail, trigger);
用法二:启动任务调度
//开启任务调度 scheduler.start();
用法三:任务调度挂起【暂停操作】
//任务调度挂起 scheduler.standby();
用法四:任务调度关闭
//关闭任务调度 scheduler.shutdown(); //默认为false //scheduler.shutdown(true); 表示等待所有正在执行的Job执行完毕后,再关闭>Scheduler //scheduler.shutdown(false); 表示直接关闭Scheduler
- DirectSchedulerFactory
DirectSchedulerFactory是对SchedulerFactory的直接实现,通过它可以直接构建scheduler,threadpool等
DirectSchedulerFactory directSchedulerFactory = DirectSchedulerFactory.getInstance(); Scheduler scheduler = directSchedulerFactory.getScheduler();
2.Quartz.properties文件介绍
2.1.文件默认所在位置
默认使用的是该配置文件,如果想自定义配置文件只需要在resources重新定义一个quartz.properties文件编写内容即可。
2.2.组成部分
- 调度器属性
org.quartz.scheduler.instanceName:属性用来区分特定的调度器实例,可以按照功能用途来给调度器起名
org.quartz.scheduler.instanceId:属性和前者一样,运行任何字符串,但是这个值必须在所有调度器实例中是唯一的,尤其是在一个集群环境中,作为集群的唯一key。假如你想Quartz帮你生成这个值额度话可以设置为AUTO
- 线程池属性
threadCount:处理Job的线程个数。至少是1,但是最多的话不要超过100,在多数集群上设置该值超过100的话就会显得相当不实用了,特别是Job执行时间较长的情况下
threadPriority:线程的优先级,有限级别高的线程比级别地的线程有限执行。最小为1,最大为10。默认为5
org.quartz.threadPoll.class:一个实现了org.quartz.spi.ThreadPoll接口的类,Quartz自带的线程池实现类是org.quartz.smpl.SimpleThreadPoll
- 作业存储设置
描述了在调度器实例的生命周期中,Job和Trigger信息是如何被存储的
- 插件配置
满足特定需求需要用到的Quartz插件的配置
2.3.配置属性描述好文推荐
2.4.在程序中去进行配置
如下例所示:
//创建调度实例工厂实例
StdSchedulerFactory schedulerFactory = new StdSchedulerFactory();
//创建配置工厂属性的对象
Properties properties = new Properties();
properties.put(StdSchedulerFactory.PROP_THREAD_POOL_CLASS, "org.quartz.simpl.SimpleThreadPool");
properties.put("org.quartz.threadPool.threadCount", "10");
//加载配置
schedulerFactory.initialize(properties);
//从调度工厂中获取调度器实例
Scheduler scheduler = schedulerFactory.getScheduler();
..........
以上是关于Quartz配置资源介绍的主要内容,如果未能解决你的问题,请参考以下文章