Hangfire .NET任务调度框架实例


1、介绍

Hangfire是一个开源的.NET任务调度框架,提供了内置集成化的控制台(后台任务调度面板),可以直观明了的查看作业调度情况

2、Nuget安装

img

3、编写代码

1)测试服务:FirstStartService

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using Microsoft.Extensions.Hosting;
namespace HangfireTest.Service
{
public class FirstStartService: IHostedService
{
public async Task StartAsync(CancellationToken cancellationToken)
{
await Task.Run(() =>
{
Console.WriteLine("FirstStartService......StartAsync");
}, cancellationToken);
//hangfire定时任务
var id = Hangfire.BackgroundJob.Enqueue(() => Console.WriteLine("插入队列的任务"));
Hangfire.BackgroundJob.Schedule(() => Console.WriteLine("延迟的任务"), TimeSpan.FromSeconds(5));
Hangfire.RecurringJob.AddOrUpdate(() => Console.WriteLine("循环执行的任务"), Hangfire.Cron.Minutely);
Hangfire.BackgroundJob.ContinueJobWith(id, () => Console.WriteLine("指定任务执行之后执行的任务"));
}
public async Task StopAsync(CancellationToken cancellationToken)
{
await Task.Run(() =>
{
Console.WriteLine("FirstStartService......StopAsync");
}, cancellationToken);
}
}
}

2)测试服务:SecondStartService

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using Microsoft.Extensions.Hosting;
namespace HangfireTest.Service
{
public class SecondStartService: IHostedService
{
public async Task StartAsync(CancellationToken cancellationToken)
{
await Task.Run(() =>
{
Console.WriteLine("SecondStartService......StartAsync");
}, cancellationToken);
}
public async Task StopAsync(CancellationToken cancellationToken)
{
await Task.Run(() =>
{
Console.WriteLine("SecondStartService......StopAsync");
}, cancellationToken);
}
}
}

3)Startup.cs注入测试服务和Hangfire(此实例项目为VS2022 .NET6所建的ASP.NET Core Web API测试项目 Program.cs和其他版本建的项目有所区别,但注入方式没区别)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/// <summary>
/// 应用程序的入口点和生命周期 -- 应用程序启动起处理的任务
/// </summary>
builder.Services.AddHostedService<FirstStartService>();
builder.Services.AddHostedService<SecondStartService>();

/// <summary>
/// Hangfire定时任务
/// </summary>
builder.Services.AddHangfire(x => x.UseSqlServerStorage("Data Source=localhost;Initial Catalog=Test;Integrated Security=True;")); // SqlServer
builder.Services.AddHangfireServer();

/// <summary>
/// Hangfire定时任务
/// </summary>
app.UseHangfireDashboard();

4、访问方式

访问调度控制面板:

本地访问方式:https://localhost:端口号/hangfire/

5、效果图

img

6、相关链接

① Hangfire官网

② Hangfire中文文档

③ Hangfire Github源码

一个简单的实例,如有帮助,欢迎点赞关注收藏!


文章作者: GoodTimeGGB
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 GoodTimeGGB !
评论
  目录