Hangfire Background Worker Manager

    主要优点是你可以使用相同的服务器群来管理你的后台作业和工作线程以及利用 Hangfire 提供的Recurring Jobs高级调度功能.

    建议使用安装包.

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

    如果你想手动安装;

    1. 添加 AbpBackgroundWorkersHangfireModule 到你的模块的依赖列表:

    HangfireBackgroundWorkerBase 是创建一个后台工作者简单的方法.

    1. public class MyLogWorker : HangfireBackgroundWorkerBase
    2. {
    3. {
    4. RecurringJobId = nameof(MyLogWorker);
    5. CronExpression = Cron.Daily();
    6. }
    7. {
    8. Logger.LogInformation("Executed MyLogWorker..!");
    9. return Task.CompletedTask;
    10. }
    11. }

    你可以直接实现 IHangfireBackgroundWorker, 但是 HangfireBackgroundWorkerBase 提供了一些有用的属性,例如 Logger.

    创建一个后台工作者后, 你应该添加到 IBackgroundWorkerManager, 最常用的地方是在你模块类的 OnApplicationInitialization 方法中:

    1. [DependsOn(typeof(AbpBackgroundWorkersModule))]
    2. public class MyModule : AbpModule
    3. public override void OnApplicationInitialization(
    4. ApplicationInitializationContext context)
    5. {
    6. context.AddBackgroundWorker<MyLogWorker>();
    7. //如果定义了接口
    8. //context.AddBackgroundWorker<IMyLogWorker>();
    9. }

    context.AddBackgroundWorker(...) 是一个是以下代码快捷的扩展方法:

    它解析给定的后台工作者并添加到 IBackgroundWorkerManager.

    虽然我们通常在 OnApplicationInitialization 中添加后台工作者, 但对此没有限制. 你可以在任何地方注入 IBackgroundWorkerManager 并在运行时添加后台工作者.