Quartz.Net与MVC结合定时任务

1.首先,我们打开Visual Studio 2015,创建一个ASP.NET MVC的Web应用程序项目。

2.然后通过程序包管理器控制台来安装Quartz.Net组件。

Quartz.Net一个最简单任务至少包括三部分实现:job(作业),trigger(触发器)以及scheduler(调度器)。

其中job 是你需要在一个定时任务中具体执行的业务逻辑,trigger则规定job何时并按照何种规则执行,最终job和trigger会被注册到 scheduler(调度器)中,scheduler负责协调job和trigger的运行。

3.创建Job类

 public class ReportJob : IJob
  {
    public void Execute(IJobExecutionContext context)//必须实现IJob接口下的Execute方法
    {
      var reportDirectory = string.Format("~/reports/{0}/", DateTime.Now.ToString("yyyy-MM"));
      reportDirectory = System.Web.Hosting.HostingEnvironment.MapPath(reportDirectory);
      if (!Directory.Exists(reportDirectory))
      {
        Directory.CreateDirectory(reportDirectory);
      }
      var dailyReportFullPath = string.Format("{0}report_{1}.log", reportDirectory, DateTime.Now.Day);
      var logContent = string.Format("{0}==>>{1}{2}", DateTime.Now, "create new log.", Environment.NewLine);
      File.AppendAllText(dailyReportFullPath, logContent);
    }
  }

4.创建触发器trigge

 public class ReportJobScheduler
    {
        public static void Start()
        {
            IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); //从工厂中获取一个调度器实例化
            scheduler.Start();   //开始调度器
            IJobDetail job = JobBuilder.Create<ReportJob>().Build();//创建一个作业
            ITrigger trigger = TriggerBuilder.Create()
                .WithSimpleSchedule(t =>
                t.WithIntervalInSeconds(5) //触发执行,5s一次
                .RepeatForever())          //重复执行
                .Build();
            scheduler.ScheduleJob(job,trigger);       //把作业,触发器加入调度器。
        }
    }

5.把这个任务放到项目程序的全局cs文件(Global.asax)的Application_Start方法中来执行.

 protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            //在这里调用
            ReportJobScheduler.Start();
        }

6.之后启动网站,便会发现网站的根目录下有定时任务产生的文件和文件夹

7.这只是个简单的例子,参照http://www.cnblogs.com/bobositlife/p/aspnet-mvc-csharp-quartz-net-timer-task-scheduler.html,这篇博客做的实验。

本实验源代码:https://git.oschina.net/sdadx/Quartz.Net/tree/master/

时间: 2024-10-20 01:26:06

Quartz.Net与MVC结合定时任务的相关文章

Spring 3整合Quartz 2实现手动设置定时任务:新增,修改,删除,暂停和恢复----每一个你不满意的当下,都有一个你不曾努力的过去

摘要:在项目的管理功能中,对定时任务的管理有时会很常见.但一般定时任务配置都在xml中完成,包括cronExpression表达式,十分的方便.但是如果我的任务信息是保存在数据库的,想要动态的初始化,还有就是任务较多的时候不是得有一大堆的xml配置?或者说我要修改一下trigger的表达式,使原来5秒运行一次的任务变成10秒运行一次,或者说我要控制定时任务的 “ 暂停 ” 呢?暂停之后又要在某个时间点 “ 重启 ” 该定时任务呢?或者说直接 “ 删除 ” 该定时任务呢?要 改变某定时任务的触发时

Quartz使用-入门使用(java定时任务实现)

注:这里使用的是Quartz1.6.5版本(包:quartz-1.6.5.jar) [java] view plain copy //<a href="http://lib.csdn.net/base/softwaretest" class='replace_word' title="软件测试知识库" target='_blank' style='color:#df3434; font-weight:bold;'>测试</a>main函数 /

Quartz.net 定时任务之简单任务

一.概述 1.quartz.net 是一款从java quartz 上延伸出来的定时任务框架. 2.我在网上看到很多大神写过关于quartz.net 的博客.文章等,在这些博客文章里也学会了很多关于quartz的知识.今天博主也想写一篇关于quartz的文章(不足之处望大神斧正),希望能帮助正在学习quartz路上的兄弟姐妹,顺便也巩固自己. 3.quartz这篇博客会从最基础的开始,之后会逐渐的升级,如果有喜欢的兄弟姐妹,请关注我的博客,博主会持续更新 二.搭建 1.打开vs创建新的mvc空项

atititt.java定时任务框架选型Spring Quartz 注解总结

atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz  (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增加context,task命名空间xml: 2 2.2. 增加xsi:schemaLocation valide 2 2.3. 我们的task任务扫描注解in spr.xml 2 2.4. 设置运行方法 3 2.5. 设置输出日志 3 3. 运行测试sprX走ok兰. 4 4. Quartz Sch

Spring整合quartz实现定时任务

quartz比timer的功能更强大,结合spring可以简化quartz的配置来实现定时任务. 1 导入包:quartz-all.jar 2 创建定时执行的任务类(类名可以是普通类名): package com.web.quartz; import java.text.SimpleDateFormat; import java.util.Date; public class Task { public void execute(){ String now=new SimpleDateForma

SpringBoot整合Quartz定时任务

记录一个SpringBoot 整合 Quartz 的Demo实例 POM.XML文件 <!-- 定时器任务 quartz需要导入的坐标 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>1.8.5</version> </dependency> 类似于控制

SpringBoot整合Quartz定时任务 的简单实例

POM.XML文件 <!-- 定时器任务 quartz需要导入的坐标 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>1.8.5</version> </dependency> 类似于控制器代码: package com.xiaowu.quartz.de

Spring Boot 入门(九):集成Quartz定时任务

本片文章续<Spring Boot 入门(八):集成RabbitMQ消息队列>,关于Quartz定时任务请参考<Quartz的基本使用之入门(2.3.0版本)> spring boot实现定时任务,除了集成Quartz外,还可以直接使用scheduler注解.使用1个简单的注解就可以完成,为什么还要较为复杂的集成Quartz呢?这里我简单回答下这2中方式的区别,这也是我在项目中为什么要选择Quartz这种方式. 1.scheduler注解方式,一旦定时任务产生异常,那么此定时任务就

spring quartz 分布式任务计划

通过maven管理的spring mvc工程,且已经成功连接数据库. 数据库表结构 /*Table structure for table `qrtz_calendars` */ DROP TABLE IF EXISTS `qrtz_calendars`; CREATE TABLE `qrtz_calendars` ( `SCHED_NAME` varchar(120) NOT NULL, `CALENDAR_NAME` varchar(200) NOT NULL, `CALENDAR` blo