asp.Net   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了浅谈Quartz.Net 从无到有创建实例大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

<p class="title">一、Quartz.Net介绍

  Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等。 Quartz.NET允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz.NET的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业。在我平时的工作中对于Quartz的使用比较频繁,正好利用空闲时间把这个做一个记录。

title">二、快速搭建

title">1.利用VS创建一个控制台的项目

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/05e3c5b9ae6a13d6fab9f5ca8e815fb0.png" >

title">2.利用NuGet工具包安装所需要的依赖包

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/bb35d8e0e89751f02ac43a0f493262cc.png" >

title">3.首先安装:Quartz,这里选择我的项目一直在用的2.6的版本,目前为止最新的已经到了3.x

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/99bfb9a7b4420dee752c1ad4c7cfd9c3.png" >

安装完成之后在引用里面会多了一些新的引用

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/07cacc4fae2f0267ae8f4652d0075da3.png" >

<p class="sub_title">4.安装我们的日志依赖包:log4net

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/0e96b0b92493f82ca0997d64defac04c.png" >

title">5.安装搭建服务用的:TopsHelf 以及其所依赖的 TopsHelf.Log4Net

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/6f7bd5f48cb6accdb40c8b601ea28848.png" >

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/51a21d087c277a09a7bb806c2f04ac36.png" >

至此,所用到的包基本已经安装完毕,下面是添加三个程序文件和三个配置文件。

title">6.添加我们的测试程序文件:JobTest.cs,该文件实现Quartz的IJob接口

https://cn.js-code.com/res/2019/02-06/17/1c53668bcee393edac0d7b3b3daff1ae.gif" alt="">https://cn.js-code.com/res/2019/02-06/17/405b18b4b6584ae338e0f6ecaf736533.gif" alt="">
450_60@ { { ILog _logger = LogManager.GetLogger(); ntext context) { _logger.InfoFormat(); }

title">7.添加用于TopsHelf调度的文件:serviceRunner.cs

8742233" class="code_img_closed" src="https://cn.js-code.com/res/2019/02-06/17/1c53668bcee393edac0d7b3b3daff1ae.gif" alt="">8742233" class="code_img_opened" style="display: none" src="https://cn.js-code.com/res/2019/02-06/17/405b18b4b6584ae338e0f6ecaf736533.gif" alt="">
8742233" class="cnblogs_code_hide"> @H_450_60@ Helf; { serviceRunner : serviceControl,serviceSuspend { scheduler scheduler; serviceRunner() { scheduler =schedulerFactory.GetDefaultscheduler(); { scheduler.Start(); { scheduler.Shutdown(false); Tinue(HostControl hostControl) { scheduler.ResumeAll(); { scheduler.PauseAll(); }
serviceRunner

title">8.添加程序的入口文件:Program.cs

https://cn.js-code.com/res/2019/02-06/17/1c53668bcee393edac0d7b3b3daff1ae.gif" alt="">https://cn.js-code.com/res/2019/02-06/17/405b18b4b6584ae338e0f6ecaf736533.gif" alt="">
450_60@ m.Collections.Generic; m.IO; m.Linq; m.Text; m.Threading.Tasks; Helf; { { Main(String { log4net.Config.XmlConfigurator.ConfigureAndWatch( FileInfo(AppDomain.CurrentDomain.baseDirectory + ); HostFactory.Run(x => { ); x.service); x.SetDescription(); x.SetDisplayName(); x.Setservicename(); Tinue(); ); }
m.cs

title">9.添加配置文件:log4net.config

https://cn.js-code.com/res/2019/02-06/17/1c53668bcee393edac0d7b3b3daff1ae.gif" alt="">https://cn.js-code.com/res/2019/02-06/17/405b18b4b6584ae338e0f6ecaf736533.gif" alt="">
450_60@ encoding= ?>
type=/> type=> value= servicelog\JobTest\"/> value= /> BACkups value= /> ename value= false/> value= /> value= /> > value= /> type=> /> /> /> /> > {HH:mm:ss,fff} [%-5level] %m /> > value= /> value= /> /> =/> =/>

title">10.添加配置文件:quartz.config

0-9001-8f17f63a9c70" class="code_img_closed" src="https://cn.js-code.com/res/2019/02-06/17/1c53668bcee393edac0d7b3b3daff1ae.gif" alt="">0-9001-8f17f63a9c70" class="code_img_opened" style="display: none" src="https://cn.js-code.com/res/2019/02-06/17/405b18b4b6584ae338e0f6ecaf736533.gif" alt="">
0-9001-8f17f63a9c70" class="cnblogs_code_hide"> @H_450_60@ # You can configure your scheduler either # or quartz.scheduler.instancename = quartz.threadPool.type =l.SimpleThreadPool,Quartz quartz.threadPool.th@R_944_5875@unt = quartz.threadPool.threadPriority = quartz.plugin.xml.type =l.XMLschedulingDataProcessorPlugin,Quartz quartz.plugin.xml.filenames = ~/s.xml # export Ting context #quartz.scheduler.exporter.type =l.RemoTingschedulerExporter,Quartz #quartz.scheduler.exporter.port = #quartz.scheduler.exporter.bindName =scheduler #quartz.scheduler.exporter.chAnnelType = #quartz.scheduler.exporter.chAnnelName = httpQuartz

title">11.添加配置文件:quartz_jobs.xml

https://cn.js-code.com/res/2019/02-06/17/1c53668bcee393edac0d7b3b3daff1ae.gif" alt="">https://cn.js-code.com/res/2019/02-06/17/405b18b4b6584ae338e0f6ecaf736533.gif" alt="">
450_60@ encoding=?> scheduling-data xmlns=http://quartznet.sourceforge.net/JobschedulingData xmlns:xsi=http://www.w3.org/2001/XMLscheR_817_11845@a-instance version=> TestJob Test TestJob测试 JobTest.TestJob,JobTest false TestJobtrigger Test TestJob Test --22T00::+: / * * * * ?
s.xml

注意:在这个xml文件中,job-type节点的配置@R_468_10197@,我总结了一下,逗号之前的是我们将要运行的程序命名空间的地址

逗号之前:JobTest.TestJob

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/7068a8db8cc8bc7482ce6f5ae8264b28.png" >

逗号之后是整个项目的命名空间,我们这里就是这个    JobTest

title">12.需要将三个配置文件的属性设置为始终复制,或者如果较新则复制,应该也是没问题的

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/23590ba70b61bbb0873846739402df42.png" >

 

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/149e5e29bf165acd5063ff657591f36b.png" >

title">13.启动项目,就可以看到如下效果

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/31381aab013624fd8a9048be7a9c2d04.png" >

<p class="title">三、搭建服务


<p class="sub_title">1.将项目的生成方式切换成Release,至于Release和Debug的区别,可自行百度啦

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/701517a87aeba9f8c79158df092b84e5.png" >

然后重新生成项目

title">2.找到项目生成的文件夹,此时会发现一个JobTest.exe的文件,也是我们搭建服务所用的主文件

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/31a515a7509d3e6ef23c9b5007efc1f8.png" >

title">3.以管理员的身份运行cmd,并切换到上面程序生成的路径,之后输入JobTest.exe install 安装服务:

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/4135e07e4f879139744dc9a388a4c787.png" >

<p class="sub_title">4.启动服务

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/d1c989952b101496a8d3b69307350bcc.png" >

<p class="sub_title">5.此时,在我们的服务里就已经能看到我们创建的JobTest的服务了,并且已经启动了:

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/48abd31d531dcfe111c14f96e0623b02.png" >

<p class="sub_title">6.此时,在我们之前的配置文件log4net.config中找到服务生成的日志文件的路径,并切换到该路径就可以看到生成的日志文件:

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/ec39de03313479660f4b2c96fd7ded58.png" >

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/606edfd0d8b53daa51ce1ea9d91a3a8c.png" >

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/60e7c9f1a5b5d37d908ba1b24111a4f1.png" >

title">7.最后,友情提示,将服务关闭并卸载服务(JobTest.exe uninstall):

title="浅谈Quartz.Net 从无到有创建实例" alt="浅谈Quartz.Net 从无到有创建实例" src="https://cn.js-code.com/res/2019/02-06/17/9dcbf6db9666321a868ee873df4e6d76.png" >

<p class="title">四、总结

  一个简单的Quartz项目已经创建完成并生成了服务,可以定时去完成你指定的任何作业了。但是Quartz中还有一些问题非常重要。

  首先就是quartz_jobs.xml文件中cron-expression节点的配置,该节点的配置内容决定了服务的定时循环作业的频率,详情可见博客:https://blog.csdn.net/lu_wei_wei/article/details/51251337

  其次就是每次服务启动,程序都会去运行一次,然后才会根据你设置的时间定时去运行,这样很多时候是会有一些问题在里面的,具体的会在项目里面,遇到,到时候就需要用一些这种的方法去解决这些问题。

最后,尽情体验Quartz.Net给你带来的实现定时作业的快感吧!๑乛◡乛๑

大佬总结

以上是大佬教程为你收集整理的浅谈Quartz.Net 从无到有创建实例全部内容,希望文章能够帮你解决浅谈Quartz.Net 从无到有创建实例所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: