Hangfire

官网:https://www.hangfire.io/

官网的简介是在.NET和.NET Core应用程序中执行后台处理的简单方法,不需要Windows服务或单独的进程。

Hangfire的免费主要功能分为以下四个模块:

“即发即忘”:作业仅执行一次,而且几乎是在创建后立即执行。
延迟作业:延迟的作业也只执行一次,但不是立即执行,而是在一定的时间间隔后执行。

循环作业:循环作业在指定的CRON计划上触发多次。

延续作业:当其父作业完成时,继续执行。

快速开始和配置

在需要使用的项目的Nuget管理器中安装有关于Hangfire的包,接下来在Program类中进行配置:

C#
//配置SQLServer DB或MSMQ或Redis
builder.Services.AddHangfire(x => x.UseSqlServerStorage(builder.Configuration.GetConnectionString("HangfireConnectionString")));

//添加并启动Hangfire服务器
builder.Services.AddHangfireServer();

//启用仪表盘
app.UseHangfireDashboard();

//可直接在Program中调度或在.NET托管任务中调度
 BackgroundJob.Enqueue(() => Console.WriteLine("Hello, world!"));
 builder.Services.AddHostedService<HangFireExtension>();

开始使用

配置完成后,将你想要使用的配置类中使用上面的各种任务就可以啦,简单易懂!

调度后台任务:

C#
BackgroundJob.Enqueue<BackgroundJobService>(x => x.SendEmail("test@a.com", "Subject", "Body"));

延迟后台任务:

C#
BackgroundJob.Schedule<BackgroundJobService>(x => x.SendEmail("test@a.com", "Subject", "Body"), TimeSpan.FromDays(60));

定时后台任务:

C#
  RecurringJob.AddOrUpdate("BackgroundJobService",
      () => BackgroundJobService.ExecuteAsync(),
      "*/21 * * * * *"); //21秒执行一次 Cron表达式

继承后台任务:

C#
// 创建任务 A
var parentJobId = BackgroundJob.Enqueue(() => TaskA());

// 在任务 A 完成后执行任务 B
BackgroundJob.ContinueWith(parentJobId, () => TaskB());


// 如果任务 A 成功完成,则执行任务 B
BackgroundJob.ContinueWith(parentJobId, () => TaskB(), JobContinuationOptions.OnSuccess);

// 如果任务 A 失败,则执行任务 C
BackgroundJob.ContinueWith(parentJobId, () => TaskC(), JobContinuationOptions.OnFailure);

订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部