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"));

posted @ 2024-12-10 09:31  小小邪  阅读(3)  评论(0编辑  收藏  举报