Quartz.Net使用教程


Quartz.Net使用教程

在項目的開發過程中,難免會遇見后需要后台處理的任務,例如定時發送郵件通知、后台處理耗時的數據處理等,這個時候你就需要Quartz.Net了。

Quartz.Net是純凈的,它是一個.Net程序集,是非常流行的Java作業調度系統Quartz的C#實現。

Quartz.Net一款功能齊全的任務調度系統,從小型應用到大型企業級系統都能適用。功能齊全體現在觸發器的多樣性上面,即支持簡單的定時器,也支持Cron表達式;即能執行重復的作業任務,也支持指定例外的日歷;任務也可以是多樣性的,只要繼承IJob接口即可。

對於小型應用,Quartz.Net可以集成到你的系統中,對於企業級系統,它提供了Routing支持,提供了Group來組織和管理任務,此外還有持久化、插件功能、負載均衡和故障遷移等滿足不同應用場景的需要。

我們使用的是當前最新版本2.4.0進行演示。(注意:高版本不適合當前教程)添加引用以后,來創建一個Job類

 

 

 

 

 1        static void Main(string[] args)
 2         {
 3             //1.首先創建一個作業調度池
 4             ISchedulerFactory schedf = new StdSchedulerFactory();
 5             //2.實例化調度器工廠
 6             ISchedulerFactory schedulefactory = new StdSchedulerFactory();
 7             //3.實例化調度器
 8             IScheduler scheduler = schedulefactory.GetScheduler();
 9 
10             //4.創建一個作業
11             IJobDetail job1 = JobBuilder.Create<Class1>()
12                 .WithIdentity("demojob1", "groupa")
13                 .Build();
14 
15             //5.1:第一種方法直接寫死多少秒執行一次
16             //ITrigger trigger1 = TriggerBuilder.Create()//創建一個觸發器
17             //    .WithIdentity("demotrigger1", "groupa")
18             //    .StartNow()
19             //    .WithSimpleSchedule(b => b.WithIntervalInSeconds(5)//5秒執行一次
20             //    .RepeatForever())//無限循環執行
21             //    .Build();
22 
23             //5.2推薦:第二種使用cron表達式
24             //在線生成cron表達式: http://cron.qqe2.com/ 
25             string corn = "*/10 * * * * ?";
26             ITrigger trigger1 = TriggerBuilder.Create()
27                .WithIdentity("demotrigger1", "groupa")
28               .WithCronSchedule(corn)//每一小時執行一次
29               .Build();
30 
31             //6.添加參數(鍵值對),如果不需要傳參則忽略這一步
32             //方法內獲取你傳的參數: string Name = context.Trigger.JobDataMap.GetString("Name");
33             trigger1.JobDataMap.Add("Name", "劉玄德");
34 
35             //7.把作業,觸發器加入調度器
36             scheduler.ScheduleJob(job1, trigger1);
37             //8.開始運行
38             scheduler.Start();
39         }

以上就是最簡單的Quartz的使用事例

  2.下面是我個人的一點擴展

1             Type type = Type.GetType("test1.TestCase");//獲取類 ""里為 命名空間.類名
2             Object obj = Activator.CreateInstance(type);//這里創建
3             //4.創建一個作業
4             IJobDetail job2 = JobBuilder.Create(obj.GetType())
5                 .WithIdentity("demojob1", "groupa")
6                 .Build();
7   //適合已經存在的方法動態添加定時任務

 

1             //適合在不改變代碼的情況下,動態添加要定時執行的方法(前面是文件物理地址(可以使用映射將虛擬地址轉換成物理地址) ,后面是命名空間加類名)
2             object obj = Assembly.LoadFile(@"D:\普通文件袋\測試\ClassLibrary2\bin\Debug\ClassLibrary2.dll").CreateInstance("ClassLibrary2.Class2");
3             //4.創建一個作業
4             IJobDetail job2 = JobBuilder.Create(obj.GetType())
5                 .WithIdentity("demojob1", "groupa")
6                 .Build();

 

3.Quartz.NET 部署在IIS上,防止被動態回收(個人建議不要使用IIs服務器

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM