.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
