.NET中Quartz任務排程器的簡單應用例項
阿新 • • 發佈:2018-11-21
1.首先從NuGet中安裝Quartz,安裝最新版本就OK
2.新建一個Job類實現Quart中的IJob介面用於執行業務邏輯,程式碼如下:
class CheckUpdateJob : IJob
{
public async Task Execute(IJobExecutionContext context)
{
//在此處實現業務
}
}
3.新建一個任務執行類用於啟動任務,程式碼如下:
class JobController
{
//排程器
IScheduler scheduler;
//排程器工廠
ISchedulerFactory factory;
//執行時間間隔
private int checkInternal = int.Parse(ConfigurationManager.AppSettings["CheckInternal"]);
public async Task Start()
{
factory = new StdSchedulerFactory();
scheduler = await factory.GetScheduler();//建立一個任務
IJobDetail jobCheck = JobBuilder.Create<CheckUpdateJob>().WithIdentity("check", "other").Build();
//建立一個觸發器
ITrigger checkTrigger = TriggerBuilder.Create()
.WithIdentity("check", "other")
.WithSchedule(SimpleScheduleBuilder.Create().WithIntervalInSeconds(checkInternal ).RepeatForever())
.StartNow()
.Build();
//把任務和觸發器加入排程器中
await scheduler.ScheduleJob(jobCheck, checkTrigger);
//開始執行
await scheduler.Start();
}
}
對於標黃色部分做簡單說明
CheckUpdateJob:毫無疑問就是你的Job類。從原始碼裡面看必須是需要實現IJob介面的類,原始碼如圖:
check:自定義的Job別名,當有很多的Job需要執行的時候,可以使用別名區分。
other:自定義分組別名,當你有多Job的時候可以把Job進行分組,例如:訂單,資料清理等;當你需要對Job管理的時候便會派上用場。
ITrigger 中的check,other道理同上
checkInternal:這個引數為輪詢間隔秒數,這裡我只做個簡單間隔秒數輪詢方式執行Job,其內建了豐富的方式。比如:每月的第幾號,每週的星期幾,上午或者下午時間點等
其他更多的應用可自行度娘或者看官方文件吧!
4.最後呼叫Start()即可,程式碼如下:
static void Main(string[] args)
{
JobController controller = new JobController();
var t = controller.Start();
t.Wait();
Console.Read();
}