• 896 阅读
  • 1 回复

Quartz.NET配置

视频在线上传+队列转换FLV+水印+捉图+修复+获时+转3GP(API语言不限,开视频站必备!)

概述
Quartz.NET 在开源任务调度框架中的翘首,它提供了强大任务调度机制,难能可贵的是它同时保持了使用的简单性。Quartz 允许开发人员灵活地定义触发器的调度时间表,并可以对触发器和任务进行关联映射。 此外,Quartz提供了调度运行环境的持久化机制,可以保存并恢复调度现场,即使系统因故障关闭,任务调度现场数据并不会丢失。此外,Quartz还提供了组件式的侦听器、各种插件、线程池等功能。


参考
官方学习文档:http://www.quartz-scheduler.net/documentation/index.html


使用实例介绍:http://www.oschina.net/p/quartz.net


快速搭建一个Quartz
第一步:引用
添加C5.dll、Common.Logging.dll、Common.Logging.Log4Net.dll、log4net.dll、Quartz.dll引用


C5.dll 一个C#和其他CLI语言的泛型集合类。.Net2.0及以上才可以使用。简介地址:http://www.itu.dk/research/c5/
Common.Logging.dll 通用日志接口
Common.Logging.Log4Net.dll 提供log4net对通用日志接口(Common.Logging)的实现
log4net.dll 小白都知道不解


第二步:继承IJob实现
VCodeExpired.cs  实现IJob,在Execute方法里编写要处理的业务逻辑,系统就会按照Quartz的配置,定时处理。


https://www.cnblogs.com/sunxuchu/p/5398900.html
本帖最后由 张小鱼 于 2018-10-11 14:03 编辑
小鱼的淘宝店铺-多多支持哇

Quartz.net 开源job调度框架(一)

视频在线上传+队列转换FLV+水印+捉图+修复+获时+转3GP(API语言不限,开视频站必备!)

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

官方学习文档:http://www.quartz-scheduler.net/documentation/index.html
使用实例介绍:http://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html
官方的源代码下载:http://sourceforge.net/projects/quartznet/files/quartznet/  
下面将结合我的项目中的使用给大家分享一下
  • 为什么要使用Quartz?

    我们经常会有这样的应用场景:需要定时轮询某些符合条件的数据,在达到一定条件的时候,对数据做出一定的处理,比如:电商平台要搞促销活动,设定好活动开始时间,在到达开始时间的时候定时推一些促销信息到网站前台。这时我们常用的方法有:windows service,console job等等方式来处理,本文以Quartz调度console job来实现。
   项目的总体思路是:用Windows Service把主程序Host起来,然后通过Quartz.net的可视化界面控制Job的执行和调度
首先创建Console Job程序,下载Quartz相关的包(Quartz.NET,CrystalQuartz.Remote),通过Nuget安装的话,相关依赖包会自动下载。

使用这个框架的最大的好处就是业务便于横向扩展,比如目前根据业务来说我有两个实现的功能,一个是抢购的商品到时间之后定时上下架,还有一个是超时订单15分钟未支付自动作废,我在项目中新建两个文件夹,放各自的业务处理类,其他的都是公用的。
接下来看具体的实现:

程序主入口用Service Run起来。
JobManager是添加的系统组建,里面的实现如下:

ServiceBase中的代码很关键,起到配置线程池的作用,这个地方设置线程池信息是整个框架在调度的时候通用的配置

新建一个作业调度的基类:JobService,实现如下:


主要用于设置Job的名称,作业组的名称,还有给调度器中添加每一个作业信息和各自的触发器信息
接下来基本的配置实现已经完成了,我们来看看具体的作业是怎么实现的?

各自的业务处理模块的模板都和这个类似,具体可根据自己的习惯来实现。关于触发器的配置还有另外一种做法,就是通过配置文件来实现,大家可以百度一下。
业务处理类中就根据各自不同的业务做具体的实现了,代码如下:

项目中纪录Log(这个很重要,非常重要)使用Nlog,数据库访问使用Dapper(轻量级的ORM,特别好用,性能也很好)
Job的工作已经基本完成了,接下来要做就是把添加安装文件,将Job做成Windows Service安装到服务器了,这个步骤就不再啰嗦了(如果不知道的童鞋可以百度,或者联系我要源码)
下面我们还剩最后一步,就是开始我们说的可视化控制,截至到目前我们做的都是不可见的服务,怎么用可视化的界面呈现给用户呢?继续往下
新建一个空的ASP.NET WebSite,安装CrystalQuartz.Remote 包,这个可以使得你在Web站点里面访问到框架生成的可视化界面。


安装完包之后我们可以看到在WebConfig中添加了相关的配置,最重要的就是SchedulerHost这个配置,这个地方指定的端口号就是我们在最开始创建线程池的时候制定的Port,儿地址就是我们当前服务器部署的地址了,需要说明的一点就是我们的Windows Service部署的服务器和WebSite部署的站点是要在同一个服务器上的。

接下来就是启动将新建的网站部署到IIS,开启WindowsService,然后在浏览器里面浏览新的站点,在默认的端口后面直接输入:/CrystalQuartzPanel.axd 就看访问了

看到这么清爽的界面,很是激动人心啊,我们不用自己开发可视化的Job调度框架就可以通过界面来控制我们的服务了,是不是很心动呢?
心动不如行动啊,筒子们如果有想法就动手实践一下,我差不多用了3个小时左右的时间来实践了一下。Quartz框架中的其他功能暂时还没研究。
如果在实现过程中有什么问题可以给我留言,我把源码共享出来,大家一起研究,学习~~
示例代码:https://github.com/KenWang007/JobScheduleDemoCode.git


https://www.cnblogs.com/Wolfmanlq/p/5873235.html
小鱼的淘宝店铺-多多支持哇