.net任務(wù)調(diào)度框架Hangfire簡介
任務(wù)調(diào)度是我們項(xiàng)目中常見的功能,雖然任務(wù)調(diào)度的功能實(shí)現(xiàn)本身并不難,但一個(gè)好用的輪子還是可以給我們的開發(fā)的效率提升不少的。
在.net環(huán)境中,較為有名的任務(wù)調(diào)度框架是HangFire與Quartz.NET,本文這里主要介紹Hangfire,相比Quartz.NET來說,它提供了更加友好的頁面,使用起來更加方便。Hangfire的優(yōu)點(diǎn)網(wǎng)上有不少文章介紹的,這里簡單的列舉一下:
- 支持各種常見的任務(wù)類型
- 持久化保存任務(wù)、隊(duì)列、統(tǒng)計(jì)信息
- 重試機(jī)制
- 多語言支持
- 支持任務(wù)取消
- 支持按指定Job Queue處理任務(wù)
- 服務(wù)器端工作線程可控,即job執(zhí)行并發(fā)數(shù)控制
- 分布式部署,支持高可用
- 良好的擴(kuò)展性,如支持IOC、Hangfire Dashboard授權(quán)控制、Asp.net Core、持久化存儲等
簡單使用:
這里就簡單的演示.net core下基本的用法。首先建立一個(gè).net core 的web項(xiàng)目,如果沒有別的需求使用空項(xiàng)目模板也可以。
1. 添加程序包:
Install-Package Hangfire
2.配置數(shù)據(jù)庫:
Hangfire默認(rèn)支持sqlserver和redis,也可以通過第三方擴(kuò)展支持sqlite等數(shù)據(jù)庫。這里我選擇的是常用的sqlserver。
使用sqlserver作為存儲引擎時(shí),首先需要在sqlserver上創(chuàng)建一個(gè)數(shù)據(jù)庫,可以不用建表,Hangfire會(huì)自動(dòng)建表。
3. 注冊服務(wù):
首先在Startup.cs的ConfigureServices 方法中注冊服務(wù):
services.AddHangfire(r => r.UseSqlServerStorage("Data Source=192.168.18.130;Initial Catalog=HangfireDemo;User ID=sa;Password=abc123@ss"));
然后在Configure 方法中加入HangfireServer及HangfireDashboard:
app.UseHangfireServer(); app.UseHangfireDashboard();
此時(shí)啟動(dòng)程序,就可以通過http://localhost:5000/hangfire查看程序主界面了,默認(rèn)還自帶中文
4. 配置任務(wù)
Hangfire提供了一系列接口配置任務(wù):
//基于隊(duì)列的任務(wù)處理(Fire-and-forget jobs) var jobId = BackgroundJob.Enqueue( () => Console.WriteLine("Fire-and-forget!")); //延遲任務(wù)執(zhí)行(Delayed jobs) var jobId = BackgroundJob.Schedule( () => Console.WriteLine("Delayed!"), TimeSpan.FromDays(7)); //定時(shí)任務(wù)執(zhí)行(Recurring jobs) RecurringJob.AddOrUpdate( () => Console.WriteLine("Recurring!"), Cron.Daily); //延續(xù)性任務(wù)執(zhí)行(Continuations) RecurringJob.AddOrUpdate( () => Console.WriteLine("Recurring!"), Cron.Daily);
這些任務(wù)是配置在服務(wù)器上的,如果要?jiǎng)討B(tài)配置任務(wù)則可以通過讓服務(wù)器提供接口即可。
缺點(diǎn)
最后也簡單的說下Hangfire的缺點(diǎn)吧,另一個(gè)比較熱門的任務(wù)調(diào)度框架是Quartz.net,它和Hangfire相比有如下優(yōu)點(diǎn):
- 支持秒級單位的定時(shí)任務(wù)處理,但是Hangfire只能支持分鐘及以上的定時(shí)任務(wù)處理
- 更加復(fù)雜的觸發(fā)器,日歷以及任務(wù)調(diào)度處理
- 可配置的定時(shí)任務(wù)
其中Hangfire最大的缺點(diǎn)可能是第一條,任務(wù)執(zhí)行時(shí)間精度不夠,不過在大部分應(yīng)用場景來說,這個(gè)不是很大的問題。
到此這篇關(guān)于.net任務(wù)調(diào)度框架Hangfire的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ASP.NET Mvc開發(fā)之刪除修改數(shù)據(jù)
這篇文章主要介紹了ASP.NET Mvc開發(fā)中的刪除修改數(shù)據(jù)功能,感興趣的小伙伴們可以參考一下2016-03-03在dropDownList中實(shí)現(xiàn)既能輸入一個(gè)新值又能實(shí)現(xiàn)下拉選的代碼
在dropDownList中實(shí)現(xiàn)既能輸入一個(gè)新值,又能實(shí)現(xiàn)下拉選項(xiàng),想必很多的朋友已經(jīng)為此功能按耐不住了吧,接下來與大家分享下如何實(shí)現(xiàn),感興趣的朋友可以參考下哈2013-04-04.NetCore手動(dòng)封裝日志組件的實(shí)現(xiàn)代碼
這篇文章主要介紹了.NetCore手動(dòng)封裝日志組件的實(shí)現(xiàn)代碼,封裝的目的是便于在項(xiàng)目里更加簡單方便使用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03asp.net Repeater綁定時(shí)使用函數(shù)
asp.net repeater綁定函數(shù)使用實(shí)例2008-08-08form身份驗(yàn)證通過后,只能用FormsAuthentication.RedirectFromLoginPage
form身份驗(yàn)證通過后,只能用FormsAuthentication.RedirectFromLoginPage2009-03-03asp.net創(chuàng)建XML文件的方法小結(jié)
這篇文章主要介紹了asp.net創(chuàng)建XML文件的方法,結(jié)合實(shí)例形式總結(jié)分析了asp.net創(chuàng)建XML文件的原理,步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-04-04ASP.NET2.0數(shù)據(jù)庫入門之SqlDataSource
ASP.NET2.0數(shù)據(jù)庫入門之SqlDataSource...2006-09-09