Hangfire Background Worker Manager
主要优点是你可以使用相同的服务器群来管理你的后台作业和工作线程以及利用 Hangfire 提供的Recurring Jobs高级调度功能.
建议使用安装包.
在项目的文件夹(.csproj文件)中打开命令行窗口输入以下命令:
如果你想手动安装;
-
添加
AbpBackgroundWorkersHangfireModule
到你的模块的依赖列表:
HangfireBackgroundWorkerBase
是创建一个后台工作者简单的方法.
public class MyLogWorker : HangfireBackgroundWorkerBase
{
{
RecurringJobId = nameof(MyLogWorker);
CronExpression = Cron.Daily();
}
{
Logger.LogInformation("Executed MyLogWorker..!");
return Task.CompletedTask;
}
}
- CronExpression 是CRON表达式, 参阅 CRON 表达式
你可以直接实现
IHangfireBackgroundWorker
, 但是HangfireBackgroundWorkerBase
提供了一些有用的属性,例如Logger
.
创建一个后台工作者后, 你应该添加到 IBackgroundWorkerManager
, 最常用的地方是在你模块类的 OnApplicationInitialization
方法中:
[DependsOn(typeof(AbpBackgroundWorkersModule))]
public class MyModule : AbpModule
public override void OnApplicationInitialization(
ApplicationInitializationContext context)
{
context.AddBackgroundWorker<MyLogWorker>();
//如果定义了接口
//context.AddBackgroundWorker<IMyLogWorker>();
}
context.AddBackgroundWorker(...)
是一个是以下代码快捷的扩展方法:
它解析给定的后台工作者并添加到 IBackgroundWorkerManager
.
虽然我们通常在 OnApplicationInitialization
中添加后台工作者, 但对此没有限制. 你可以在任何地方注入 IBackgroundWorkerManager
并在运行时添加后台工作者.