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