Abp vNext 後台作業hangfire

2021-10-25 07:14:22 字數 3023 閱讀 2243

簡要說明

abp vnext 提供了後台工作者和後台作業的支援,基本實現與原來的 abp 框架類似,並且 abp vnext 還提供了對 hangfire 和 rabbitmq 的後台作業整合。開發人員在使用這些第三方庫的時候,基本就是開箱即用,不需要做其他複雜的配置。

後台作業在系統開發的過程當中,是比較常用的功能。因為總是有一些長耗時的任務,而這些任務我們不是立即響應的,例如 excel 文件匯入、批量傳送簡訊通知等。

後台工作者 的話,abp vnext 的實現就是在 clr 的 timer 之上封裝了一層,周期性地執行使用者邏輯。abp vnext 預設提供的 後台任務管理器,就是在後台工作者基礎之上進行的封裝。

涉及到後台任務、後台工作者的模組一共有 6 個,它們分別是:

什麼是hangfire

hangfire 是乙個開源的.net任務排程框架,目前1.6+版本已支援.net core。個人認為它最大特點在於內建提供整合化的控制台,方便後台檢視及監控

**片段引用

啟動public class startup

public void configureservices(iservicecollection services)

var configuration = services.getconfiguration();

globalstatehandlers.handlers.add(new succeededstateexpirehandler(int.parse(configuration["hangfire:jobexpirationtimeout"])));

services.addhostedservice();

services.addhangfire(x =>

var connectionstring = configuration["hangfire:redis:connectionstring"];

x.useredisstorage(connectionstring, new redisstorageoptions()

//活動伺服器超時時間

invisibilitytimeout = timespan.fromminutes(60),

db = int.parse(configuration["hangfire:redis:db"])

x.usedashboardmetric(dashboardmetrics.servercount)

.usedashboardmetric(dashboardmetrics.recurringjobcount)

.usedashboardmetric(dashboardmetrics.retriescount)

.usedashboardmetric(dashboardmetrics.awaitingcount)

.usedashboardmetric(dashboardmetrics.enqueuedandqueuecount)

.usedashboardmetric(dashboardmetrics.scheduledcount)

.usedashboardmetric(dashboardmetrics.processingcount)

.usedashboardmetric(dashboardmetrics.succeededcount)

.usedashboardmetric(dashboardmetrics.failedcount)

.usedashboardmetric(dashboardmetrics.enqueuedcountornull)

.usedashboardmetric(dashboardmetrics.failedcountornull)

.usedashboardmetric(dashboardmetrics.deletedcount);

var filter = new basicauthauthorizationfilter(

new basicauthauthorizationfilteroptions

sslredirect = false,

requiressl = false,

logincasesensitive = false,

users = new

new basicauthauthorizationuser

login = configuration["hangfire:login"] ,

passwordclear= configuration["hangfire:passwordclear"]

authorization = new

filter

var joboptions = new backgroundjobserveroptions

queues = new ,

workercount = environment.processorcount * int.parse(configuration["hangfire:processorcount"]),

servername = configuration["hangfire:servername"],

schedulepollinginterval = timespan.fromseconds(1), //計畫輪詢間隔  支援任務到秒

設定///

/// 已完成的job設定過期,防止資料無限增長

///

public class succeededstateexpirehandler : istatehandler

public timespan jobexpirationtimeout;

public succeededstateexpirehandler(int jobexpirationtimeout)

jobexpirationtimeout = timespan.fromminutes(jobexpirationtimeout);

public string statename => succeededstate.statename;

context.jobexpirationtimeout = jobexpirationtimeout;

Abp vNext 後台作業hangfire

abp vnext 提供了後台工作者和後台作業的支援,基本實現與原來的 abp 框架類似,並且 abp vnext 還提供了對 hangfire 和 rabbitmq 的後台作業整合。開發人員在使用這些第三方庫的時候,基本就是開箱即用,不需要做其他複雜的配置。後台作業在系統開發的過程當中,是比較常用...

Android後台作業最佳實現(二)

intelligent job scheduling jobscheduler還提供了高度可擴充套件的功能 如清除快取小任務是合適的,和大的如乙個資料庫同步到雲。除了jobscheduler,還有其他一些設施可以幫助你的應用程式的工作日程。這些措施包括 alarmmanager firebase j...

sap後台作業管理 sap列印管理

sap後台作業管理 後台作業,主要用於執行需要處理大量資料,對互動沒有要求的程式。個人認為,簡單的建立,配置和監控後台作業沒有什麼難度。後台作業管理最為困難的解決方案的取捨,系統負載的調控。失控的後台作業,往往對系統帶來災難性的效能問題,也會導致許可權管理的風險,結果是得不償失,而且可能導致流程混亂...