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

原创 2015年07月10日 12:18:30

         在许多应用场景下我们都希望定时执行一些事务,比较常见的是维护数据库:定时生成汇总数据,定时复制插入数据等。其他特定场景下都存在这些定时任务。如果涉及数据库维护的定时任务,我们尚可以使用数据库自带的数据库代理来实现定时批处理。面对其他类型的定时任务,往往只能通过在服务器上编写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("作业执行!");
        }
    } 
}


Quartz.net开源作业调度框架使用详解

quartz.net作业调度框架是伟大组织OpenSymphony开发的quartz scheduler项目的.net延伸移植版本。支持 cron-like表达式,集群,数据库。功能性能强大更不用说。...
  • jiangfei009003
  • jiangfei009003
  • 2016年09月18日 16:32
  • 1290

QUARTZ.NET 一个定时任务框架

Quartz.NET-1.0.3文件下载地址 (这是老版本了,现在已经有新版本了。用法好像不一样了) 首先要添加Quartz.NET-1.0.3 文件下面的  bin/3.5/Release/Qua...
  • Fanbin168
  • Fanbin168
  • 2015年03月29日 01:15
  • 2786

Net作业调度(Quartz.Net)

背景 很多时候,项目需要在不同个时刻,执行一个或很多个不同的作业。 Windows执行计划这时并不能很好的满足需求了。 这时候需要一个更为强大,方便管理,集部署的作业调度了。   介绍...
  • zzr494684778
  • zzr494684778
  • 2015年12月14日 11:19
  • 539

Quartz.NET开源作业调度框架系列(二):CronTrigger

CronTriggers比SimpleTrigger更加的灵活和有用,对于比较复杂的任务触发规则,例如"每个星期天的晚上12:00"进行备份任务,SimpleTrigger就不能胜任,只能选择Cron...
  • dream_ll
  • dream_ll
  • 2017年04月26日 11:27
  • 258

quartz简单定时任务示例

测试jar版本:quartz-1.6.0.jar Job类: import java.util.Date; import org.quartz.Job; import org.quartz.Job...
  • zhangbest2009
  • zhangbest2009
  • 2015年12月03日 20:13
  • 610

ASP.NET MVC5+EF6+EasyUI 后台管理系统(85)-Quartz 作业调度用法详解二

系列目录 前言 上一节我们学习了Quartz的基本用法 这一节学习通过XML配置的形式来执行任务 这一节主要认识一些属性,为下一步打基础 代码下载:链接:http://pan.baidu...
  • ymnets
  • ymnets
  • 2017年11月29日 08:45
  • 117

MVC 使用Quartz.Net组件实现定时计划任务

转载地址 最近,项目中需要执行一个计划任务,组长就让我了解一下Quartz.net 这个组件,挺简单的一个组件,实现起来特别的方便,灵活,值得推荐给大家一起学习一下这个小工具。以前我有的时候是使...
  • xbfengyu
  • xbfengyu
  • 2016年11月14日 08:07
  • 1292

Quartz.Net定时任务框架,实现灵活的定时任务

Quartz.Net定时任务框架,实现灵活的定时任务。
  • cctvcqupt
  • cctvcqupt
  • 2015年08月17日 00:40
  • 393

C# 定时任务 调度框架 WebWork (Quartz.NET) Web版的Windows服务

说起这个,还是觉得很自豪的(另外这里还要特别感谢Nick同学),至少目前我没有见到有这样现成框架,这个东西主要是用来调度任务的,就是根据时间定时执行一个任务,而这个任务你可以用C# 写成一个一个的dl...
  • gavin_luo
  • gavin_luo
  • 2013年10月15日 23:17
  • 14980

Quartz.NET 任务调度框架 - 01

在之前的博客中,介绍过Quartz任务调度框架(Java版本)。最近在.NET平台使用了Quartz任务调度框架,并且结合TopShelf框架,把Quartz发布成Windows Service。 今...
  • afandaafandaafanda
  • afandaafandaafanda
  • 2015年08月06日 22:12
  • 1543
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:定时作业框架Quartz.net的简单应用
举报原因:
原因补充:

(最多只允许输入30个字)