ABP之使用Hangfire
首先ABP自帶Hangfire,所以我們今天使用Volo.Abp.BackgroundJobs.HangFire
1、在項目需要位置引入Nuget包(6.0.3)

2、再引入基于內容的存儲庫:Hangfire.MemoryStorage(1.7.0)

3、Hangfire.MemoryStorage不是abp封裝的,所以可能會存在里面引用的Hangfire.Core 版本和Volo.Abp.BackgroundJobs.HangFire不一致的問題。只需要再引用Hangfire.Core,二者最高的版本即可。(1.7.29)

4、引入完之后,在項目的HttpApiHostModule.cs 文件中進行配置

引入依賴模塊typeof(AbpBackgroundJobsHangfireModule)

5、ConfigureServices(ServiceConfigurationContext context)方法中進行配置
點擊查看代碼
context.Services.AddHangfire(config => {
// config.UseStorage(new MySqlStorage("server=127.0.0.1;database=patent;uid=root;pwd=WWW.1633.com;charset=utf8mb4;Allow User Variables=true;"));
config.UseMemoryStorage();
});
6、OnApplicationInitialization(ApplicationInitializationContext context)初始方法
點擊查看代碼
app.UseHangfireDashboard("/hangfire"); //啟用hangfire面板
app.UseHangfireServer();

7、定義工作類

記得要注入依賴,這邊注入一個ITransientDependency類型

我這邊是自己定義了DBhelpder和Redis幫助類、也可以不定義、看個人寫法吧
當然有個簡單的小實現
點擊查看代碼
public class JobForDaiLiShiCase : ITransientDependency
{
public ITongJiDaiLiShiCaseService _tongJiDaiLiShiCaseService { get; set; }
public async Task Run()
{
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss"));
// await _tongJiDaiLiShiCaseService.TongJiAsync();
}
}
然后,我們同樣在 項目的 .module.cs文件中去調用任務
點擊查看代碼
app.UseHangfireDashboard("/hangfire"); //啟用hangfire面板
app.UseHangfireServer();
// 創建每1分鐘調用一次的定時任務
RecurringJob.AddOrUpdate<JobForDaiLiShiCase>(x => x.Run(), "0/2 * * * * ?");

浙公網安備 33010602011771號