Hangfire Setting on AspDotnet Core

前言 你有排程相關的需求嗎? 需要定期呼叫指定的方法來做事嗎? 相信大家多多少少都有接過類似的需求,不過除了使用 Windows 的排程來做或是使用 cron job 這些傳統工具來做到之外你還有更現代的選擇 - Hangfire。 內文 其實 .NET solution 的排程選擇不只 Hangfire 還有老牌的 Quartz.NET 也是非常好的選擇。單純以排程作業來說 Quartz 可以做到的控制是比 Hangfire 還要來的更細緻,不過 Hangfire 就優勢來說大概就是比較沒有歷史包袱,管理介面也是本身內建,不像 Quartz 是需要另外找第三方來幫助 (ex. GitHub - CrystalQuartz)。 好啦….其實兩個都很好我只是雞蛋裡挑骨頭…只是最近有用到 Hangfire 所以就用這個來練習排程吧~ Initialize your project for Hangfire Hangfire 最吸引人的地方除了他學習成本較 Quartz.NET 低,另外就是他自帶漂亮 Dashboard 而且設定還很容易。想要套用 Dashboard 的話先引用套件 1 dotnet add package Hangfire.AspNetCore 這個套件會相依 Hangfire.Core 所以可以先裝這個就好,然後在 Configure 設定區塊裡補上以下這段 1 2 3 4 5 6 7 8 9 10 11 12 13 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { //... app.UseEndpoints(endpoints => { endpoints.MapHangfireDashboard( new DashboardOptions { StatsPollingInterval = 3600000 }); } //... } StatsPollingInterval 這個參數的預設值是 2000 它的單位是毫秒,也就是 2秒它就會去背景檢查 Job 執行的狀態,這個數值在測試環境基本上不用太擔心什麼,不過若是正式環境的話建議要調整,不然會讓背後儲存 Job 的位置壓力很大 (若是存在關聯式資料庫的話就更要小心了)。 ...

April 5, 2022 · 3 分鐘 · 530 字