اجرای وظایف زمانبندی شده با استفاده از Quartz.Net در Asp.Net MVC

شنبه 28 تیر 1393

اجرای وظایف زمانبندی شده با استفاده از Quartz.Net در Asp.Net MVC

اجرای وظایف زمانبندی شده با استفاده از Quartz.Net در Asp.Net MVC

Quartz.Net ،یک فریم ورک قوی برای اجرای وظایف زمانبندی شده در .Net است.

من در این مقاله ،قصد دارم چگونگی اجرای وظایف زمانبندی شده  با استفاده از Quartz.Net در َAsp.Net MVC  را به شما آموزش دهم.

ابتدا یک پروژه MVC ،راد رمحیط .Net ایجاد می کنیم.

سپس Quartz.Net Library Package(NuGet) را به پروژه مان اضافه می کنیم.

به این صورت که Package Manage Console ،را باز کرده و دستور زیر را برای  اضافه کردن این کتابخانه اجرا می کنیم.

"Install-Package XAct.Scheduling.Quartz"

هم اکنون یک فولدر با نام Jobs را اضافه کرده و داخل آن یک کلاس با نام HelloJob ایجاد می کنیم.

در این کلاس قصد داریم تا متنی را همراه با تاریخ و زمان جاری در یک فایل ذخیره کنیم.

ابتدا کار زمانبندی شده را در متد Execute اینترفیس Job این کتابخانه ایجاد می کنیم.

namespace QuartzNetMvc.Jobs
{
    public class HelloJob:IJob
    {
        public void Execute(IJobExecutionContext context)
        {
            string path = @"C:\Log.txt";

            using (StreamWriter sw = new StreamWriter(path, true))
            {
                sw.WriteLine("Message from HelloJob " + DateTime.Now);
            }
        }
    }
}

هم اکنون زمان انجام تنظیمات مختلف برای اجرای این وظیفه در Global.asax است.

ابتدا زمان آغاز Job را تعریف می کنیم.

 DateTimeOffset startTime = DateBuilder.FutureDate(2, IntervalUnit.Second);

حال با استفاده از متد Create کلاس JobBuilder ،وظیفه را معرفی می کنیم.

متد Create، نام کلاسی که اینترفیس IJob را پیاده سازی کرده است ،به عنوان پارامتر می پذیرد و متد Build را فراخوانی می کند.

IJobDetail job = JobBuilder.Create<HelloJob>()
                                      .WithIdentity("job1")
                                      .Build();

برای ساخت یک Job زمانبندی شده در Quartz.Net نیاز به استفاده از Trigger داریم

حال متد Create مربوط به کلاس TriggerBuilder را فراخوانی می کنیم.سپس با استفاده از متد WithIdentity یک نام به trigger اختصاص می دهیم.

با استفاده از متد StartAt ،زمان شروع وظیفه را تعیین می کنیم.سپس تعداد دفعات و فواصل زمانی احرای این وظیفه را مشخص می کنیم.

ITrigger trigger = TriggerBuilder.Create()
                                             .WithIdentity("trigger1")
                                             .StartAt(startTime)
                                             .WithSimpleSchedule(x => x.WithIntervalInSeconds(10).WithRepeatCount(2))
                                             .Build();

و در آخرمتد  ScheduleJob را فراخوانی می کنیم و آبجکت های Job و Trigger را به آن پاس می دهیم.

حال متدStart را برای اجرای Job اجرا می کنیم.

ISchedulerFactory sf = new StdSchedulerFactory();
            IScheduler sc = sf.GetScheduler();
            sc.ScheduleJob(job, trigger);

            sc.Start();

هم اکنون اگر شما پروژه را اجرا کنید ،خروجی این پروژه در فایلی با نام Log به صورت زیر است.

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید