使用Quartz实现定时作业

该文章是系列文章 基于.NetCore和ABP框架如何让Windows服务执行Quartz定时作业 的其中一篇。
Quartz是一个开源的作业调度框架,准确的称谓应该是 Quartz.Net,它是Java开源项目Quartz Scheduler的一部分。
关于Quartz的功能可访问 https://www.quartz-scheduler.net/features.html
nuget地址:https://www.nuget.org/packages/Quartz/3.0.7/
GitHub地址:https://github.com/quartznet/quartznet

首先是对定义的MyJobService进行完善。

完善之后的代码如下

IScheduler是主要的接口,它由ISchedulerFactory生成,StdSchedulerFactory继承自ISchedulerFactoryStdSchedulerFactory获取配置的顺序是先从App.config查找quartz section,没找到就查找文件名为quartz.config的配置,如果再没有,代码内置的有默认的配置项。

使用XML文件配置

quartz.config的简略配置如下

  • quartz.scheduler.instanceName – 此调度程序的名称将为“QuartzTest”,如果没配置,默认名称是“QuartzScheduler”
  • quartz.threadPool.threadCount – 最多可同时运行10个作业,如果现在有超过10个job需要执行的话,不会报错,但是将有job不能执行。
  • quartz.plugin.xml.type和quartz.plugin.xml.fileNames需要新加nuget包Quartz.Plugins,指定了配置job详情的xml文件,该文件与quartz.config在同级目录下。

注意:新增了三个文件,分别是job_scheduling_data_2_0.xsd、quartz.config、quartz_jobs.xml,文件属性为如果较新则复制

quartz_jobs.xml示例

job-type标识加载SayHelloJob的名称,要指定正确不然报错。更多配置可以参考:Quartz.Tests.Integration/Xml/TestData

实现Job

详细文档地址:https://www.quartz-scheduler.net/documentation/quartz-3.x/tutorial/index.html

IScheduler.Start(System.Threading.CancellationToken)调用之后将启动实现的Job,该Job必须继承IJob,执行的操作放在实现的Execute方法中,该方法标识了Task,也就是说我们可以在Execute方法内调用同步方法或者异步方法。

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝赞助

微信钱包赞助

版权所有丨本站资源仅限于学习研究,严禁从事商业或者非法活动!:ABC资源站 » 使用Quartz实现定时作业

切换注册

登录

忘记密码 ?

切换登录

注册