值此元旦佳節,是個學習的好時間,啊哈哈哈,斷斷續續研究了一晚上,總結下吧 !
1、NuGet安裝包
Hangfire.AspNetCore
Hangfire.MemoryStorage
Hangfire.SqlServer
其中Hangfire.MemoryStorage和Hangfire.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