欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.net任務(wù)調(diào)度框架Hangfire簡介

 更新時間:2022年07月02日 15:31:01   作者:天方  
這篇文章介紹了.net任務(wù)調(diào)度框架Hangfire的簡單使用方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

任務(wù)調(diào)度是我們項目中常見的功能,雖然任務(wù)調(diào)度的功能實現(xiàn)本身并不難,但一個好用的輪子還是可以給我們的開發(fā)的效率提升不少的。

在.net環(huán)境中,較為有名的任務(wù)調(diào)度框架是HangFire與Quartz.NET,本文這里主要介紹Hangfire,相比Quartz.NET來說,它提供了更加友好的頁面,使用起來更加方便。Hangfire的優(yōu)點網(wǎng)上有不少文章介紹的,這里簡單的列舉一下:

  • 支持各種常見的任務(wù)類型
  • 持久化保存任務(wù)、隊列、統(tǒng)計信息
  • 重試機制
  • 多語言支持
  • 支持任務(wù)取消
  • 支持按指定Job Queue處理任務(wù)
  • 服務(wù)器端工作線程可控,即job執(zhí)行并發(fā)數(shù)控制
  • 分布式部署,支持高可用
  • 良好的擴展性,如支持IOC、Hangfire Dashboard授權(quán)控制、Asp.net Core、持久化存儲等

簡單使用:

這里就簡單的演示.net core下基本的用法。首先建立一個.net core 的web項目,如果沒有別的需求使用空項目模板也可以。

1. 添加程序包:

Install-Package Hangfire

2.配置數(shù)據(jù)庫:

Hangfire默認(rèn)支持sqlserver和redis,也可以通過第三方擴展支持sqlite等數(shù)據(jù)庫。這里我選擇的是常用的sqlserver。

使用sqlserver作為存儲引擎時,首先需要在sqlserver上創(chuàng)建一個數(shù)據(jù)庫,可以不用建表,Hangfire會自動建表。

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();

此時啟動程序,就可以通過http://localhost:5000/hangfire查看程序主界面了,默認(rèn)還自帶中文

4. 配置任務(wù)

Hangfire提供了一系列接口配置任務(wù):

//基于隊列的任務(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));


//定時任務(wù)執(zhí)行(Recurring jobs)
RecurringJob.AddOrUpdate(
    () => Console.WriteLine("Recurring!"),
    Cron.Daily);


//延續(xù)性任務(wù)執(zhí)行(Continuations)
RecurringJob.AddOrUpdate(
    () => Console.WriteLine("Recurring!"),
    Cron.Daily);

這些任務(wù)是配置在服務(wù)器上的,如果要動態(tài)配置任務(wù)則可以通過讓服務(wù)器提供接口即可。

缺點

最后也簡單的說下Hangfire的缺點吧,另一個比較熱門的任務(wù)調(diào)度框架是Quartz.net,它和Hangfire相比有如下優(yōu)點:

  • 支持秒級單位的定時任務(wù)處理,但是Hangfire只能支持分鐘及以上的定時任務(wù)處理
  • 更加復(fù)雜的觸發(fā)器,日歷以及任務(wù)調(diào)度處理
  • 可配置的定時任務(wù)

其中Hangfire最大的缺點可能是第一條,任務(wù)執(zhí)行時間精度不夠,不過在大部分應(yīng)用場景來說,這個不是很大的問題。

到此這篇關(guān)于.net任務(wù)調(diào)度框架Hangfire的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論