Quartz.NET Windows

时间:2022-01-04 03:33:14

想必大家在项目中处理简单的后台持续任务或者定时触发任务的时候均使用 Thread 或者 Task 来完成,但是项目中的这种需求一旦多了的话就得将任务调度引入进来了,那今天就简单的介绍一下 Quartz.NET 基于 Windows 服务宿主是怎样配置使用的。

Quartz.NET 是一个优秀的任务调度框架,,移植于 Java 版的 Quartz 。

官网:

Github:https://github.com/quartznet/quartznet

示例环境

- .Net 4.5.2

- Quartz 2.4.1

- Common.Logging 3.3.1

- log4net 2.0.5

- Common.Logging.Log4Net1213 3.3.1

源码地址:https://github.com/Wlitsoft/QuartzNETWinServiceSample

配置

1. quartz.config

这个配置文件需要放在服务运行根目录下,用于指定 quartz 的一些运行配置,比如调度名称、线程池实现组件、线程池大小、任务配置文件路径等。

1 # You can configure your scheduler in either <quartz> configuration section 2 # or in quartz properties file 3 # Configuration section has precedence 4 5 quartz.scheduler.instanceName = QuartzNETWinServiceScheduler 6 7 # configure thread pool info 8 quartz.threadPool.type = Quartz.Simpl.SimpleThreadPool, Quartz 9 quartz.threadPool.threadCount = 10 10 quartz.threadPool.threadPriority = Normal 11 12 # job initialization plugin handles our xml reading, without it defaults are used 13 quartz.plugin.xml.type = Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz 14 quartz.plugin.xml.fileNames = ~/Conf/jobs.config

暂时需求需要修改的只有一处,看最后一行 quartz.plugin.xml.fileNames = ~/Conf/jobs.config 指定任务的配置文件路径。

2. 任务配置文件

1 <?xml version="1.0" encoding="UTF-8"?> 2 <!-- This file contains job definitions in schema version 2.0 format --> 3 <job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"> 4 5 <processing-directives> 6 <overwrite-existing-data>true</overwrite-existing-data> 7 </processing-directives> 8 9 <schedule> 10 <job> 11 <name>Job1</name> 12 <group>Jobs</group> 13 <description>任务1</description> 14 <job-type>Wlitsoft.ProjectSample.QuartzNETWinService.Job.Job1,QuartzNETWinService</job-type> 15 <durable>true</durable> 16 <recover>false</recover> 17 </job> 18 <trigger> 19 <simple> 20 <name>Job1Trigger</name> 21 <group>Jobs</group> 22 <description>每 30 秒执行一次</description> 23 <job-name>Job1</job-name> 24 <job-group>Jobs</job-group> 25 <repeat-count>-1</repeat-count> 26 <repeat-interval>30000</repeat-interval> 27 </simple> 28 </trigger> 29 </schedule> 30 </job-scheduling-data>

以下为配置文件属性:

- 任务 (job 节点)

simple 节点项说明  
名称   类型   是否必填   默认值   描述  
name   string   Y       触发器名称  
group   string   N   默认组名   触发器名称  
description   string   N       触发器描述  
job-name   string   Y       要触发的任务的名称  
job-group   string   Y       要触发的任务的组名称  
durable   boolean   N   false   任务完成后是否依然保存到数据库  
recover   boolean   N   false   应用或服务重启之后是否忽略过期任务  



- 触发器 (trigger 节点)

下面说下最常用的两种触发器: