玩轉C#之【Hangfire】

閱讀時間約 6 分鐘

介紹

類似Windows排程的一個套件,不過他有Dashboard可以看
可以用在商業用途

使用情境

簡單來說如果你需要定時的執行某一段程式就可以使用這個套件來幫你完成。

優點

  • Simple 開發簡易、安裝簡單、方便部署
  • Persistent 工作任務可存放於多種儲存裝置
  • Transparent 提供 Dashboard 可及時查看工作任務狀態
  • Reliable 執行失敗的工作任務有自動重試機制
  • Distributed 可分散部署多台以同時處理大量工作
  • 個別 Server 可設置同時處理數量以支援處理密集的工作任務

任務執行方式

  • Fire-and-forgot jobs: 站台啟動後自動執行一次
  • Delayed jobs: 可設定時間區間,每間格時間區間執行一次
  • Recurring jobs: 可設定Cron敘述,並重複執行多次
  • Continuations: 在某個job執行完後接續執行

版本

版本價格OpenFreeStartup500 / yearBusiness1,500 / yeaEnterprise4,500/ year
📷

安裝方式

安裝環境NET6
主要安裝兩個套件
  • Hangfire
  • Hangfire.MemoryStorage
目前範例是將hangfire的紀錄存在記憶體之中
先註冊AddHangfire及AddHangfireServer,並且在MideeleWave的地方加入UseHangfireDashboard
📷
Backgroud job方法
  • Fire-and-forgot jobs: 站台啟動後自動執行一次
// GET: api/<HangfireDemoController>
[HttpGet]
public IActionResult OneNigh()
{
// 第一招射後不理
// fire and got:站台啟動後只會執行一次
BackgroundJob.Enqueue(() => Debug.WriteLine("fire and got"));
return Ok("射後不理");
}
  • Delayed jobs: 可設定時間區間,每間格時間區間執行一次
[HttpGet]
public IActionResult DelaySchedule()
{
Debug.WriteLine($"API現在時間:{DateTime.Now}");

BackgroundJob.Schedule(
() => Debug.WriteLine($"由HangFire排程發送,時間:{DateTime.Now}"),
TimeSpan.FromSeconds(3));

return Ok();
}
  • Recurring jobs: 可設定Cron敘述,並重複執行多次
[HttpGet]
public IActionResult TimedRepeat()
{
Debug.WriteLine($"API現在時間:{DateTime.Now}");
//【 秒 分 時 日 月 周 年 】,其中年是可選型別,也就是說他如果在不設定年分的情況下是每年。
RecurringJob.AddOrUpdate(
() => Debug.WriteLine($"API現在時間:{DateTime.Now}")
, "15 7 * * *");

return Ok();

}
  • Continuations: 在某個job執行完後接續執行
先取得jobId再使用ContinueJobWith,來撰寫前一分任務執行完後要做的事情。
// GET: api/<HangfireDemoController>
[HttpGet]
public IActionResult Continuations()
{
// 第一招射後不理
// fire and got:站台啟動後只會執行一次
var jobid = BackgroundJob.Enqueue(() => Debug.WriteLine("fire and got"));

BackgroundJob.ContinueJobWith(jobid,()=> Debug.WriteLine("two and got"));

return Ok("接續射後不理");
}
關於各類型架構、Dashboard權限設定、工作全重設定…等等之後會專門寫一篇文章跟大家講解

參考資料

Hangfire 官方網站
過去整理的Hangfire文章
本篇已同步發表至個人部落格
https://moushih.com/2022ithome05/
鐵人賽文章
https://ithelp.ithome.com.tw/articles/10287721
為什麼會看到廣告
avatar-img
8會員
39內容數
我是這個部落格的作者,喜歡分享有關投資 💰、軟體開發 💻、占卜 🔮 和虛擬貨幣 🚀 的知識和經驗。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
一代軍師 的其他內容
Swagger是SmartBear Software的API開發人員套件工具,它是OpenAPI規範的基礎規範。 簡單來說就是 API 文件產生器。
在上一篇文章介紹過API之後,大家應該會很好奇寫好了一隻API應該怎麼測試巴?
你想像有一個黑盒子,它會跟你說輸入一個input,而會得出什麼Output,而你要把這個Input傳遞給黑盒子是透過http的方式
本系列文章主要是分享本人剛從外部培訓單位轉職成功後,剛踏入職場所學習到的新知識及學習方向。
單一職責原則(Single Responsibility Principle) 里氏替換原則(Liskov Substitution Principle) 依賴反轉原則(Dependence Inversion Principle) 最少知識原則(得墨忒耳定律)(Law Of Demeter)
Swagger是SmartBear Software的API開發人員套件工具,它是OpenAPI規範的基礎規範。 簡單來說就是 API 文件產生器。
在上一篇文章介紹過API之後,大家應該會很好奇寫好了一隻API應該怎麼測試巴?
你想像有一個黑盒子,它會跟你說輸入一個input,而會得出什麼Output,而你要把這個Input傳遞給黑盒子是透過http的方式
本系列文章主要是分享本人剛從外部培訓單位轉職成功後,剛踏入職場所學習到的新知識及學習方向。
單一職責原則(Single Responsibility Principle) 里氏替換原則(Liskov Substitution Principle) 依賴反轉原則(Dependence Inversion Principle) 最少知識原則(得墨忒耳定律)(Law Of Demeter)
你可能也想看
Google News 追蹤
在上篇瞭解完Actions & Blinks的整個工作流程後,我們就來學習如何用程式碼構建屬於自己的Actions & Blinks吧!本篇詳細講解了要自製Actions & Blinks的所有步驟並提供範例程式碼給大家參考,相信能讓大家快速入門!
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
主要來講宣告函式跟箭頭函式 : 宣告函式(Function Declaration) 語法: function functionName(parameters) { return result; } 特點: 使用 function 關鍵字 函式名稱是必需的 存在函式
Thumbnail
本文介紹瞭如何使用BAT腳本和CMD指令來自動執行檔案和空目錄的刪除作業。通過設定各種參數和指令,可以快速、有效地執行定期刪除作業,節省硬體空間並提升工作效率。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
CI 持續整合 CI目的是建立自動化專案打包。 CD 持續發表 將打包完成的專案,自動發布。
Thumbnail
在本篇文章中,將會設定 Cloud Run,以便每當將程式修改並推送到 GitHub 時,它都會使用 Cloud Build 自動構建和部署應用程序的最新版本。
Thumbnail
雖然 Heptabase 目前還沒有行事曆相關功能,但這裡我想針對日前開放的 Task 功能,來探討現階段可以做到什麼程度的任務管理。
Thumbnail
第一次開始接案後,隔天就接到了一個專案。看似報酬相當豐厚,但專案功能並不簡單,大概相當於我在公司上班一年的工作量,而且交期也很緊迫。這是一個基於ASP.NET的專案。 專案上線後,開始了噩夢般的日子。好壞參半,剛開始熟悉整個系統的時候真的是最艱難的階段,有一種回到初心的感覺。之前用過前端框架,現在
Thumbnail
用 Powershell 的 IDE ,寫一個在剪貼簿裡存 Timestamp 的無聊小程式。
在上篇瞭解完Actions & Blinks的整個工作流程後,我們就來學習如何用程式碼構建屬於自己的Actions & Blinks吧!本篇詳細講解了要自製Actions & Blinks的所有步驟並提供範例程式碼給大家參考,相信能讓大家快速入門!
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
主要來講宣告函式跟箭頭函式 : 宣告函式(Function Declaration) 語法: function functionName(parameters) { return result; } 特點: 使用 function 關鍵字 函式名稱是必需的 存在函式
Thumbnail
本文介紹瞭如何使用BAT腳本和CMD指令來自動執行檔案和空目錄的刪除作業。通過設定各種參數和指令,可以快速、有效地執行定期刪除作業,節省硬體空間並提升工作效率。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
CI 持續整合 CI目的是建立自動化專案打包。 CD 持續發表 將打包完成的專案,自動發布。
Thumbnail
在本篇文章中,將會設定 Cloud Run,以便每當將程式修改並推送到 GitHub 時,它都會使用 Cloud Build 自動構建和部署應用程序的最新版本。
Thumbnail
雖然 Heptabase 目前還沒有行事曆相關功能,但這裡我想針對日前開放的 Task 功能,來探討現階段可以做到什麼程度的任務管理。
Thumbnail
第一次開始接案後,隔天就接到了一個專案。看似報酬相當豐厚,但專案功能並不簡單,大概相當於我在公司上班一年的工作量,而且交期也很緊迫。這是一個基於ASP.NET的專案。 專案上線後,開始了噩夢般的日子。好壞參半,剛開始熟悉整個系統的時候真的是最艱難的階段,有一種回到初心的感覺。之前用過前端框架,現在
Thumbnail
用 Powershell 的 IDE ,寫一個在剪貼簿裡存 Timestamp 的無聊小程式。