.NET6 Hangfire


.NET6 MVC項目(其它類型也可以),最簡單的步驟運行hangfire,據說支持分布式,等回頭再研究下。

1、NuGet安裝包

2、Program.cs文件

services.AddHangfire(configura =>
{
    configura.UseStorage(new MemoryStorage());
});

此處我未設置持久化,如果需要sqlserver設置,參考:https://www.cnblogs.com/PrintY/p/14224495.html

app.UseHangfireServer();
app.UseHangfireDashboard("/hangfire", new DashboardOptions()
{
    //訪問面板需要登錄,此處也可以不設置
    Authorization = new[]
    {
        new BasicAuthAuthorizationFilter(new BasicAuthAuthorizationFilterOptions
            {
                SslRedirect = false,          // 是否將所有非SSL請求重定向到SSL URL
                RequireSsl = false,           // 需要SSL連接才能訪問HangFire Dahsboard。強烈建議在使用基本身份驗證時使用SSL
                LoginCaseSensitive = false,   //登錄檢查是否區分大小寫
                Users = new[]                 //配置登陸賬號和密碼
                {
                    new BasicAuthAuthorizationUser
                    {
                        Login ="admin",
                        PasswordClear="123456"
                    }
                }
            })
    }
});

支持的任務有很多類型,請參考以下,copy過來的。

//支持基於隊列的任務處理:任務執行不是同步的,而是放到一個持久化隊列中,以便馬上把請求控制權返回給調用者。
var jobId = BackgroundJob.Enqueue(()=>WriteLog("隊列任務執行了!"));

//延遲任務執行:不是馬上調用方法,而是設定一個未來時間點再來執行,延遲作業僅執行一次
var jobId = BackgroundJob.Schedule(()=>WriteLog("一天后的延遲任務執行了!"),TimeSpan .FromDays(1));//一天后執行該任務

//循環任務執行:一行代碼添加重復執行的任務,其內置了常見的時間循環模式,也可基於CRON表達式來設定復雜的模式。【用的比較的多】
RecurringJob.AddOrUpdate(()=>WriteLog("每分鍾執行任務!"), Cron.Minutely); //注意最小單位是分鍾

//延續性任務執行:類似於.NET中的Task,可以在第一個任務執行完之后緊接着再次執行另外的任務
BackgroundJob.ContinueWith(jobId,()=>WriteLog("連續任務!"));

//不調用方法,僅輸出測試
RecurringJob.AddOrUpdate("每4時執行一次", () => Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")), "0 0 */4 * * ?", TimeZoneInfo.Local);

也可以執行自己定義Job,其中Y.TestJob就是普通的類,里面定義好方法,沒啥特別的。

RecurringJob.AddOrUpdate<Y.TestJob>("Y.測試任務", e => e.SyncData(), Cron.Minutely, TimeZoneInfo.Local);

3、訪問面板

https://localhost:7099/hangfire

4、其它

我的這個是寄宿在windows系統的IIS中,那么就有個問題,IIS每天都會回收,就會導致不能按時觸發調度任務,可能在程序再被喚醒的時候才能觸發,所以記得設置IIS禁止自動回收。 

至於如何設置禁止自動回收比較簡單,可以看下我另外一個博客:https://www.cnblogs.com/PrintY/p/15848746.html

 

 

 

 

 

 

Reference:

https://www.cnblogs.com/PrintY/p/14224495.html

https://blog.csdn.net/qq_43369949/article/details/119486690

https://www.cnblogs.com/1175429393wljblog/p/13407506.html

https://blog.csdn.net/qq_38762313/article/details/100656731

https://www.cnblogs.com/memoyu/p/13955094.html

 


免責聲明!

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



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