Mvc项目利用Quartz实现定时调度Demo
1、创建MVC项目(StudyQuartz),如下图显示
2、mvc项目安装Quartz库,有两种方式
1)通过“程序包管理控制台”(视图-->其他窗口-->程序包管理器)
输入“Install-Package Quartz” 完成安装
2)通过NuGet包管理器
在浏览输入“Quartz”,下载最新版本到项目中
3、利用Quartz实现定时调度Demo
1)创建Job文件夹,创建MyJob.css 和QuartzScheduler.css
2)MyJob文件,源码如下
using Quartz; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading.Tasks; using System.Web; namespace StudyQuartz.Job { public class MyJob : IJob { public MyJob() { } public Task Execute(IJobExecutionContext context) { // 你的任务逻辑 // Console.WriteLine("作业执行: " + DateTime.Now.ToString("r")); Debug.WriteLine("作业执行: " + DateTime.Now.ToString("r")); return Task.CompletedTask; } } }
2)QuartzScheduler.css,源码如下:
using Quartz; using Quartz.Impl; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace StudyQuartz.Job { public static class QuartzScheduler { public static void StartScheduler() { // 创建作业和触发器 IJobDetail job = JobBuilder.Create<MyJob>() .WithIdentity("myJob", "group1") .Build(); // 使用Quartz Cron表达式设置触发器 ITrigger trigger = TriggerBuilder.Create() .WithIdentity("myTrigger", "group1") .StartNow() .WithCronSchedule("0/10 * * * * ?") // 每10秒执行一次 .Build(); // 创建调度器 IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler().Result; // 安排作业 scheduler.ScheduleJob(job, trigger); // 启动调度器 scheduler.Start(); } } }
3)在Global.asax,加入QuartzScheduler的注册
using StudyQuartz.Job; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Optimization; using System.Web.Routing; namespace StudyQuartz { public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); //QuartzScheduler注册 QuartzScheduler.StartScheduler(); } } }
4、运行项目,在“输出”控制台,查看效果
注意:mvc是应用程序,如果要输出打印信息,使用 Debug.WriteLine("作业执行: " + DateTime.Now.ToString("r")),若是控制台,使用Console.WriteLine("作业执行: " + DateTime.Now.ToString("r"));
平时多记记,到用时才能看看,记录你的进步,分享你的成果