定时作业框架Quartz.net的简单应用

来源:互联网 发布:淘宝买家延长收货几天 编辑:程序博客网 时间:2024/05/21 00:21

         在许多应用场景下我们都希望定时执行一些事务,比较常见的是维护数据库:定时生成汇总数据,定时复制插入数据等。其他特定场景下都存在这些定时任务。如果涉及数据库维护的定时任务,我们尚可以使用数据库自带的数据库代理来实现定时批处理。面对其他类型的定时任务,往往只能通过在服务器上编写windows进程等手段来简介实现。上述这些方法存在下列缺点:

         1.需要学习特定的语言或API

          使用SQLServer代理服务来实现定时批处理,需要编写较为复杂的SQL语句。对于许多人来说是一个不小的挑战。如果开发团队中有DBA的另说。但一般小型团队都是身兼数职,不太可能有专业DBA去做维护。编写windows服务也需要学习特定的API。

        2.与运行环境发生了紧耦合

         在大多数情况下,我们不希望应用程序与运行环境发生太多的耦合。特别是很多时候我们对web服务器并没有足够的权限。或者web服务器并不是IIS,而是某个虚拟环境云平台之类,根本就不存在windows服务。这在迁移的时候就会出现很大问题。

        Quartz.net就是用来解决这些问题的。它是基于.NET框架的。我们不需要编写任何非托管代码。而且整个API和C#语言是紧密集成的,使用了C#中的一些新特性如Lambda表达式,流式API等。使用简单,功能异常强大。我们可以用C#代码来编写各种定时任务,简单方便。足以满足一般的常见任务。是小型团队杀人越货之利器。当然如果您人多,预算也多,请出门左拐不送。

      Quartz.net框架包含三个基本部分:调度器、任务和触发器。

      代码如下备查:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using Quartz;using Quartz.Core;using Quartz.Impl;using Common.Logging;using Common.Logging.Factory;using Common.Logging.Configuration;namespace QuartzStudy{    class Program    {        static void Main(string[] args)        {            IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();            scheduler.Start();            IJobDetail job1 = JobBuilder.Create<HelloJob>()  //创建一个作业                .Build();            ITrigger trigger1 = TriggerBuilder.Create()                                       .WithIdentity("触发器名称", "触发器组")                                       .StartNow()                        //现在开始                                        .WithSimpleSchedule(x => x         //触发时间,5秒一次。                                            .WithIntervalInSeconds(5)                                           .RepeatForever())              //不间断重复执行                                        .Build();            scheduler.ScheduleJob(job1, trigger1);      //把作业,触发器加入调度器。        }    }    public class HelloJob : IJob    {        public void Execute(IJobExecutionContext context)        {            Console.WriteLine("作业执行!");        }    } }


0 0
原创粉丝点击