Mvc專案利用Quartz實現定時排程Demo

小小邪發表於2024-12-10

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

相關文章