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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hangfire Pro 2022-08-31 update

發(fā)布時間:2024/1/8 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hangfire Pro 2022-08-31 update 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。