Quartz.Net使用教程

Quartz.Net使用教程

在項目的開發過程當中,不免會碰見後須要後臺處理的任務,例如定時發送郵件通知、後臺處理耗時的數據處理等,這個時候你就須要Quartz.Net了。服務器

Quartz.Net是純淨的,它是一個.Net程序集,是很是流行的Java做業調度系統Quartz的C#實現。負載均衡

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

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

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

 

 

 

 

 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.下面是我我的的一點擴展code

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服務器blog

 

 

相關文章
相關標籤/搜索