.Net5 定時任務調度框架 Hangfire


值此元旦佳節,是個學習的好時間,啊哈哈哈,斷斷續續研究了一晚上,總結下吧 !

官網地址:https://www.hangfire.io/

1、NuGet安裝包

Hangfire.AspNetCore

Hangfire.MemoryStorage

Hangfire.SqlServer

  其中Hangfire.MemoryStorageHangfire.SqlServer使用一個就行,看是否有持久性的需求吧

2、注冊

ConfigureServices

 1  //持久性
 2  services.AddHangfire(x => x.UseStorage(new SqlServerStorage(
 3  @"Data Source =8V74DZJEG5ECJEY\MSSQLSERVER19;Initial Catalog = Y.Book; User ID = sa;Password =123456;",
 4  new SqlServerStorageOptions
 5  {
 6    //
 7    QueuePollInterval = TimeSpan.FromSeconds(15),//- 作業隊列輪詢間隔。默認值為15秒。
 8    JobExpirationCheckInterval = TimeSpan.FromHours(1),//- 作業到期檢查間隔(管理過期記錄)。默認值為1小時。
 9    CountersAggregateInterval = TimeSpan.FromMinutes(5),//- 聚合計數器的間隔。默認為5分鍾。
10    PrepareSchemaIfNecessary = true,//- 如果設置為true,則創建數據庫表。默認是true。
11    DashboardJobListLimit = 50000,//- 儀表板作業列表限制。默認值為50000。
12    TransactionTimeout = TimeSpan.FromMinutes(1),//- 交易超時。默認為1分鍾。
13  }
14  )));
15 
16  //Hangfire非持久性
17  //services.AddHangfire(x => x.UseStorage(new MemoryStorage()));

Configure

1 //Hangfire圖形可視化面板
2 app.UseHangfireServer();
3 app.UseHangfireDashboard();

 3、使用

Configure中鍵入實現代碼,其中ReportService為業務實現類,Daily為具體方法,然后設置每分鍾執行一次,此處支持CRON表達式,如果之前接觸過.net quartz那應該比較熟悉這個表達式了。

1 RecurringJob.AddOrUpdate<Service.ReportService>("報表", e => e.Daily(), Cron.Minutely());

 運行界面如下圖所示: 

 

 

 

 

 

感謝:https://www.cnblogs.com/xishuai/p/asp-net-core-hangfire.html

     https://www.cnblogs.com/linezero/p/hangfire.html

          https://blog.csdn.net/weixin_43925876/article/details/89257885

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM