进来项目中用到了 任务调度 来实现短信发送网关,所以这里分享下 Quartz.net 的使用经验。 任务调度选用了 Quartz.net 来实现,之前用的是C#中自带的window服务安装,这次也打算用Topshel来做window服务,其实感觉差不多。ok,接下来说下 Quartz.net 在开发中的使用:
Quartz.NET简介
作业调度的目标在于按照预先确定的时间和指定的顺序来确保高效的数据处理流程,从而最大限度的使用系统资源。批处理流程是一种在无需最终用户干预的方式下在后台通过顺序方式运行的操作。
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。
Quartz.NET 是一个开源的作业调度框架,它可以被在小型应用程序甚至是企业级的应用程序。它有如下几个特点:
- API 操作简单,只要几行简单的代码你就可以在应用程序里面实现自己的作业调度,并实时监视作业执行情况
- 触发器功能强大,比 Windows 的任务计划提供更细的触发粒度,你可以使用“Cron表达式(后文将介绍)”来实现如:每周星期一到星期五 8:00am,5:00pm(工作时间) 执行某一件任务
- 良好的可扩展性,它基于接口编程,你可以实现自己的 Schedule 调度器,Job 作业,以及 Trigger 触发器等
- 作业可以保存在 RAM 中,也可以持久化到数据库,支持多种数据库类型:SqlServer、Oracle、MySql等
- 集群,这是一个高级应用,可以在多台计算机之间创建负载平衡、容错处理
Quartz.NET使用
首先引用下面的dll
前4个是Quartz.NET使用所必须的,Toshelf是用来做window服务所用的
添加QuartzHelp类库
添加JobDemo.cs,实现IJob接口。
1 namespace QuartzHelp 2 { 3 public class JobDemo : IJob 4 { 5 //日志对象 6 private static readonly ILog logger = LogManager.GetLogger(typeof(JobDemo)); 7 8 public void Execute(IJobExecutionContext context) 9 { 10 logger.Info("JobDemo开始运作,模拟处理200ms的程序"); 11 Thread.Sleep(200); 12 logger.Info("JobDemo处理完"); 13 } 14 } 15 }