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.文件默认所在位置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BwfzOctD-1626663165604)(\\images\\image-20210713172314589.png)]

默认使用的是该配置文件,如果想自定义配置文件只需要在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配置资源介绍的主要内容,如果未能解决你的问题,请参考以下文章

Quartz配置资源介绍

分布式定时任务调度框架 - Quartz学习及实战记录笔记

分布式定时任务调度框架 - Quartz学习及实战记录笔记

C# quartz.net配置文件实现任务调度,多个任务同一时间触发,有公用资源占用,如何能依次执行每个任务?

quartz 使用配置文件配置线程数

Quartz.NET总结Quartz 远程调度