Hangfire后台作业管理

Hangfire是一个高级的后台作业管理. 你可以用ABP框架集成Hangfire代替默认后台作业管理. 通过这种方式你可以使用相同的后台作业API,将你的代码独立于Hangfire. 如果你喜欢也可以直接使用Hangfire的API.

参阅后台作业文档,学习如何使用后台作业系统. 本文只介绍了如何安装和配置Hangfire集成.

安装

建议使用ABP CLI安装包.

使用ABP CLI

在项目的文件夹(.csproj文件)中打开命令行窗口输入以下命令:

  1. abp add-package Volo.Abp.BackgroundJobs.HangFire

手动安装

如果你想手动安装;

  1. 添加 Volo.Abp.BackgroundJobs.HangFire NuGet包添加到你的项目:

    1. Install-Package Volo.Abp.BackgroundJobs.HangFire
  2. 添加 AbpBackgroundJobsHangfireModule 到你的模块的依赖列表:

  1. [DependsOn(
  2. //...other dependencies
  3. typeof(AbpBackgroundJobsHangfireModule) //Add the new module dependency
  4. )]
  5. public class YourModule : AbpModule
  6. {
  7. }

配置

你可以安装任何Hangfire存储. 最常用的是SQL Server(参阅Hangfire.SqlServerNuGet包).

当你安装NuGet包后,你需要为你的项目配置Hangfire.

1.首先, 我们需要更改 Module 类 (例如: <YourProjectName>HttpApiHostModule) 的 ConfigureServices 方法去配置Hangfire存储和连接字符串:

  1. public override void ConfigureServices(ServiceConfigurationContext context)
  2. {
  3. var configuration = context.Services.GetConfiguration();
  4. var hostingEnvironment = context.Services.GetHostingEnvironment();
  5. //... other configarations.
  6. ConfigureHangfire(context, configuration);
  7. }
  8. private void ConfigureHangfire(ServiceConfigurationContext context, IConfiguration configuration)
  9. {
  10. context.Services.AddHangfire(config =>
  11. {
  12. config.UseSqlServerStorage(configuration.GetConnectionString("Default"));
  13. });
  14. }
  1. 我们需要在 Module 类的 OnApplicationInitialization 方法添加 UseHangfireServer 方法调用.

如果你想要使用Hangfire的面板,你可以使用: UseHangfireDashboard

  1. public override void OnApplicationInitialization(ApplicationInitializationContext context)
  2. {
  3. var app = context.GetApplicationBuilder();
  4. // ... others
  5. app.UseHangfireServer();
  6. app.UseHangfireDashboard();
  7. }