hangfire-快速入门

概览

Hangfire允许您以非常简单但可靠的方式启动请求处理管道之外的方法调用。这些方法调用在后台线程中执行,称为后台作业。
库由三个主要组件组成:客户端、存储和服务器。下面是一个小图表,描述了Hangfire的主要流程:
在这里插入图片描述

前提

Hangfire未绑定到特定的.NET应用程序类型。您可以在ASP.NET web应用程序、非ASP.NET web应用、控制台应用程序或Windows服务中使用它。以下是要求:

  • .NET Framework 4.5
  • Persistent storage (listed below)
  • Newtonsoft.Json library ≥ 5.0.1

客户端

您可以使用Hangfire创建任何类型的后台作业:即发即弃(以卸载方法调用)、延迟(以在一段时间后执行调用)和重复(以每小时、每天执行方法,等等)。
Hangfire不要求您创建特殊类。后台作业基于常规静态或实例方法调用。

var client = new BackgroundJobClient();

client.Enqueue(() => Console.WriteLine("就是这么简单"));
client.Delay(() => Console.WriteLine("延迟执行"), TimeSpan.FromDays(1));

还有一种更简单的方法来创建后台作业——BackgroundJob类,它允许您使用静态方法来执行创建任务。

BackgroundJob.Enqueue(() => Console.WriteLine("Hello!"));

在Hangfire序列化给定信息并将其保存到存储器之后,控件将返回给调用者。

任务存储

Hangfire将后台作业和与处理相关的其他信息保存在持久存储中。持久性有助于后台作业在应用程序重新启动、服务器重新启动等情况下生存。这是使用CLR的线程池和Hangfire执行后台作业的主要区别。支持不同的存储后端:

  • SQL Azure, SQL Server 2008 R2 (and later of any edition, including Express)
  • Redis
    SQL Server存储可以通过MSMQ或RabbitMQ来增强,以降低处理延迟。
GlobalConfiguration.Configuration.UseSqlServerStorage("db_connection");

服务器

后台作业由Hangfire服务器处理。它被实现为一组专用的(非线程池的)后台线程,用于从存储中获取作业并处理它们。服务器还负责保持存储清洁并自动删除旧数据。
您只需创建BackgroundJobServer类的实例并开始处理:

using (new BackgroundJobServer())
{
    Console.WriteLine("Hangfire Server started. Press ENTER to exit...");
    Console.ReadLine();
}

Hangfire为每个存储后端使用可靠的提取算法,因此您可以在web应用程序中启动处理,而不会在应用程序重新启动、进程终止等时丢失后台作业。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值