日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hangfire 介绍(一)

發布時間:2024/1/8 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hangfire 介绍(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是Hangfire

Hangfire?是一個開源的.NET任務調度框架,目前1.6+版本已支持.NET Core。個人認為它最大特點在于內置提供集成化的控制臺,方便后臺查看及監控:

另外,Hangfire包含三大核心組件:客戶端、持久化存儲、服務端,官方的流程介紹圖如下:


Hangfire基礎

基于隊列的任務處理(Fire-and-forget jobs)

基于隊列的任務處理是Hangfire中最常用的,客戶端使用BackgroundJob類的靜態方法Enqueue來調用,傳入指定的方法(或是匿名函數),Job Queue等參數.

var jobId = BackgroundJob.Enqueue(() => Console.WriteLine("Fire-and-forget!"));

在任務被持久化到數據庫之后,Hangfire服務端立即從數據庫獲取相關任務并裝載到相應的Job Queue下,在沒有異常的情況下僅處理一次,若發生異常,提供重試機制,異常及重試信息都會被記錄到數據庫中,通過Hangfire控制面板可以查看到這些信息。

延遲任務執行(Delayed jobs)

延遲(計劃)任務跟隊列任務相似,客戶端調用時需要指定在一定時間間隔后調用:

var jobId = BackgroundJob.Schedule(() => Console.WriteLine("Delayed!"),TimeSpan.FromDays(7));

定時任務執行(Recurring jobs)

定時(循環)任務代表可以重復性執行多次,支持CRON表達式:

RecurringJob.AddOrUpdate(() => Console.WriteLine("Recurring!"),Cron.Daily);

延續性任務執行(Continuations)

延續性任務類似于.NET中的Task,可以在第一個任務執行完之后緊接著再次執行另外的任務:

BackgroundJob.ContinueWith(jobId,() => Console.WriteLine("Continuation!"));

其實還有批量任務處理,批量任務延續性處理(Batch Continuations),但這個需要商業授權及收費。在我看來,官方提供的開源版本已經基本夠用。

總結

以上是生活随笔為你收集整理的hangfire 介绍(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。