📜  hangfire 运行作业 (1)

📅  最后修改于: 2023-12-03 15:01:06.508000             🧑  作者: Mango

Hangfire 运行作业

Hangfire 是一个用于将作业异步执行的开源框架。它可以很容易地与 ASP.NET Core 和 .NET 标准库集成。 Hangfire 使用轻量级的后台线程池来处理作业,这样可以避免使用系统线程和进程。此外,Hangfire 还提供了一个可扩展的管理面板,用于监视和管理任务。

安装和配置

通过 NuGet 安装 Hangfire 包。

Install-Package Hangfire

然后您需要在 Startup.cs 文件中配置 Hangfire。

public void ConfigureServices(IServiceCollection services)
{
    // 添加 Hangfire 服务
    services.AddHangfire(config => config.UseSqlServerStorage(connectionString));
    // 添加 Mvc 服务
    services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    // 使用 Hangfire 控制台
    app.UseHangfireDashboard();
    // 运行作业服务
    app.UseHangfireServer();

    // 添加 MVC 中间件
    app.UseMvc();
}
运行作业

使用 Hangfire 可以将作业异步执行。以下是将方法设置为作业的示例:

public void SendEmail(string emailAddress, string message)
{
    // 发送电子邮件代码
}

public void ScheduleEmail()
{
    // 将 SendEmail 方法设置为作业
    BackgroundJob.Enqueue(() => SendEmail("john@example.com", "Hello from Hangfire"));
}

还可以按照以下方式将方法设置为定时作业:

public void ScheduleDailyEmail()
{
    // 以每日的时间间隔设置 SendEmail 方法
    RecurringJob.AddOrUpdate(() => SendEmail("john@example.com", "Hello from Hangfire"), Cron.Daily);
}

在以上示例中,该作业将以每日的时间间隔执行。

监视和管理任务

Hangfire 提供了一个内置的管理面板,可通过http://localhost:5000/hangfire 地址访问。在该面板上,您可以查看运行的作业、取消作业、查看作业的延迟时间等。您还可以使用 Hangfire API 来编程方式监视和管理任务。

// 获取所有作业
var jobs = JobStorage.Current.GetMonitoringApi().Monitoring.Jobs;

// 获取指定类型的作业
var recurringJobs = JobStorage.Current.GetConnection().GetRecurringJobs();
结论

在本文中,我们介绍了 Hangfire 的功能以及如何配置和使用它来异步执行作业。我们还介绍了如何使用 Hangfire 的内置管理面板和 API 来监视和管理任务。 Hangfire 是一个非常灵活和可扩展的框架,可用于处理各种异步任务。