Hangfire Pro 2022-08-31 update
Hangfire Pro 是一組擴展包,可提高性能并簡化大型應(yīng)用程序中后臺作業(yè)處理的維護。Hangfire Pro 軟件包可通過付費訂閱獲得。購買后,您會收到二進制文件、對私有 NuGet 源的訪問權(quán)限以及 GitHub 上的私有存儲庫。
套餐
Hangfire.Pro
有限的存儲支持
請注意,僅當(dāng)使用Hangfire.SqlServer、Hangfire.Pro.Redis或Hangfire.InMemory包作為作業(yè)存儲時,才正式支持 Hangfire.Pro 包。我們不能保證批次可以與其他存儲一起正常工作,因為處理保證在很大程度上取決于具體的存儲實現(xiàn)。
原子背景作業(yè)創(chuàng)建
批處理允許您以原子方式創(chuàng)建一堆后臺作業(yè)。這意味著,如果在創(chuàng)建后臺作業(yè)的過程中出現(xiàn)異常,則不會處理任何一個。假設(shè)您想向您的客戶發(fā)送 1000 封電子郵件,而他們確實希望收到這些電子郵件。這是舊方法:
for ( var i = 0; i < 1000; i++) {BackgroundJob .Enqueue(() => SendEmail(i));//遇到異常怎么辦? }但是,如果存儲變得不可用i == 500怎么辦?可能已經(jīng)發(fā)送了 500 封電子郵件,因為工作線程會在它們創(chuàng)建后拾取并處理作業(yè)。如果您重新執(zhí)行此代碼,您的一些客戶可能會收到煩人的重復(fù)代碼。因此,如果您想正確處理此問題,您應(yīng)該編寫更多代碼來跟蹤發(fā)送了哪些電子郵件。
但這里有一個更簡單的方法:
需要配置
在使用批處理之前,請調(diào)用文檔GlobalConfiguration.Configuration.UseBatches中寫的方法。
批處理作業(yè).StartNew (x => {for ( var i = 0; i < 1000; i++){x.Enqueue(() => SendEmail(i));} });如果出現(xiàn)異常,您可能會向用戶顯示錯誤,并在幾分鐘后要求重試她的操作。無需其他代碼!
鏈接批次
延續(xù)允許您將多個批次鏈接在一起。它們將在父批次的所有后臺作業(yè)完成后執(zhí)行。考慮前面的示例,您有 1000 封電子郵件要發(fā)送。如果您想在發(fā)送后進行最終操作,只需添加一個延續(xù):
var id1 = BatchJob .StartNew( /* for (var i = 0; i < 1000... */ );var id2 = BatchJob .ContinueBatchWith (id1, x => {x.Enqueue(() => MarkCampaignFinished());x.Enqueue(() => NotifyAdministrator()); });因此,批處理和批處理延續(xù)允許您定義工作流并配置將并行執(zhí)行的操作。這對于繁重的計算方法非常有用,因為它們可以分布到不同的機器上。
復(fù)雜的工作流程
創(chuàng)建操作不會限制您僅在Enqueued狀態(tài)下創(chuàng)建作業(yè)。您可以安排作業(yè)稍后執(zhí)行、添加延續(xù)、將延續(xù)添加到延續(xù)等。
var batchId = BatchJob .StartNew(x => {x.Enqueue(() => Console .Write ( "1a..." ));var id1 = x.Schedule(() => Console .Write ( "1b..." ), TimeSpan .FromSeconds(1));var id2 = x.ContinueJobWith(id1, () => Console .Write( "2..." ));x.ContinueJobWith (id2, () => Console.Write ( "3..." )); });BatchJob .ContinueBatchWith (batchId, x => {x.Enqueue(() => Console .WriteLine( "4..." )); });Hangfire.Pro.Redis
Hangfire Pro 附帶Hangfire.Pro.Redis使用Redis服務(wù)器來持久化后臺作業(yè)和其他數(shù)據(jù)的軟件包。
Redis 以其出色的性能而聞名,這里是 Hangfire.SqlServer 和 Hangfire.Redis 存儲之間的相對比較結(jié)果。
Hangfire.Pro.PerformanceCounters
Hangfire.Pro.PerformanceCounters軟件包允許 Hangfire 將其內(nèi)部指標(biāo)發(fā)布到 Windows 性能計數(shù)器——這是監(jiān)控 Windows 應(yīng)用程序和服務(wù)的標(biāo)準(zhǔn)方法。
因此,您可以使用Nagios、New Relic、Server Density等現(xiàn)有工具來主動監(jiān)控服務(wù)的運行狀況。
總結(jié)
以上是生活随笔為你收集整理的Hangfire Pro 2022-08-31 update的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android私有数据存储,Androi
- 下一篇: 2021牛客练习赛90