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
    评论
Hangfire 是一个用于 .NET 平台的开源后台作业管理框架,它允许您在 ASP.NET 应用程序中轻松执行后台作业,如发送电子邮件、生成报告、清理数据库等。 Hangfire 提供了一种简单、直观的方式来定义和执行后台作业。您可以使用 Hangfire 在后台执行方法、定时任务、队列任务等。它还提供了一个基于 WEB 的用户界面,以便您可以轻松地查看、管理和监控您的后台作业。 以下是 Hangfire 的一些主要特点: 1. 随时随地启动、停止或暂停后台任务。 2. 支持定时任务、延迟任务和队列任务。 3. 支持多种存储方式,如 SQL Server、PostgreSQL、Redis 等。 4. 提供了一个 WEB 界面,方便您查看后台任务的执行情况。 5. 支持分布式部署,允许多个应用程序使用同一个任务队列。 下面是一个简单的示例代码,演示了如何使用 Hangfire 在后台执行一个方法: ``` public class MyJob { public void DoJob() { // 执行后台任务 Console.WriteLine("Hello, Hangfire!"); } } // 在 Startup.cs 中配置 Hangfire public class Startup { public void Configuration(IAppBuilder app) { // 配置 Hangfire GlobalConfiguration.Configuration.UseSqlServerStorage("connectionString"); app.UseHangfireDashboard(); app.UseHangfireServer(); // 注册后台作业 var job = new MyJob(); BackgroundJob.Enqueue(() => job.DoJob()); } } ``` 在这个示例中,我们首先定义了一个名为 MyJob 的类,其中包含了一个名为 DoJob 的方法。然后,在 Startup.cs 中配置 Hangfire,指定了使用 SQL Server 存储后台任务,并启用了 Hangfire 的 Dashboard 和 Server。最后,我们使用 BackgroundJob.Enqueue 方法注册了一个后台任务,使其在启动应用程序后立即执行。 使用 Hangfire,您可以轻松地实现后台任务管理,并提高应用程序的可靠性和可扩展性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值