Hangfire實戰(一)------Hangfire+SQL Server實現簡單的任務調度


Hangfire:一個開源的任務調度框架

開發環境:VS2017,SQL Server 2012,.NET Framework 4.5

項目類型:控制台應用程序
1.在vs的程序包控制台中為項目添加Hangfire支持     
PM>Install-Package Hangfire
2.配置sql server連接
GlobalConfiguration.Configuration.UseColouredConsoleLogProvider().UseSqlServerStorage("Data Source=127.0.0.1;User ID=sa;Password=XXXX;Initial Catalog=Hangfire;Connection Reset=False;");
3. 創建基本任務
    Hangfire中的任務類型大致有4種類,如圖:     
任務類別 任務描述 基本語法
Fire-and-forget 將當前任務放入到一個持久化的隊列中,以便程序可以繼續執行 BackgroundJob.Enqueue
Delayed 任務在未來的一個時間點執行 BackgroundJob.Schedule
Recurring 可重復執行的任務 RecurringJob.AddOrUpdate
Continuations 將多個任務連接成類似工作流的形式順序執行 BackgroundJob.ContinueWith
4.創建任務代碼參考:  
using (var server = new BackgroundJobServer()) {
    //支持基於隊列的任務處理:任務執行不是同步的,而是放到一個持久化隊列中,以便馬上把請求控制權返回給調用者
    BackgroundJob.Enqueue(() => Console.WriteLine("Simple111"));
    //延遲任務執行:不是馬上調用方法,而是設定一個未來時間點再來執行。   
    BackgroundJob.Schedule(() => Console.WriteLine("Reliable!"), TimeSpan.FromSeconds(5));
    //一行代碼添加重復執行的任務,其內置了常見的時間循環模式,也可基於CRON表達式來設定復雜的模式。
    RecurringJob.AddOrUpdate(() => Console.WriteLine("Transparent!"), Cron.Minutely);
    //Continuations: Continuations allow you to define complex workflows by chaining multiple background jobs together.
    var jobId = BackgroundJob.Enqueue(() => Test("========First job"));
    BackgroundJob.ContinueWith(jobId, () => Test("========Start execute next task"));          
    Console.WriteLine("Hangfire Server started.Press any key to exit");
    Console.ReadKey();
}
 
5.因為上述任務的存儲是利用的Sql server實現,所以任務的運行信息都被保存在了SQL Server中,需要查看對任務的運行狀態進行查看,Hangfire也提供了一個可視化的web界面(Dashboard)。查看過程如下:
    1)創建一個ASP.NET項目
    2)添加Hangfire支持
    3)在項目中添加OWIN startup類,然后進行配置
        
    4)啟動網站項目,輸入http://<your-site>/hangfire ,即可打開如下界面,對任務進行管理
 
 
Referenced:


免責聲明!

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



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