.Net 简单使用 Hangfire

简介

Hangfire 是一个开源框架,可帮助您创建、处理和管理后台作业(官方文档)
.Net 简单使用 Hangfire_第1张图片

使用

  • 第一步:在Nuget上引用依赖Hangfire
    .Net 简单使用 Hangfire_第2张图片
  • 第二步:在Configuration注入Hangfire,Configure中使用面板
    在Configuration中使用AddHangfire和AddHangfireServer
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();

    services.AddHangfire(r => r.UseSqlServerStorage(@"Server=.;User ID=sa;Password=sa;database=AngelHangfire;"));
    
    services.AddHangfireServer();
}

在Configure中使用面板app.UseHangfireDashboard()

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
        // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
        app.UseHsts();
    }
    app.UseHttpsRedirection();
    app.UseStaticFiles();

    app.UseRouting();

    //app.UseHangfireServer(new BackgroundJobServerOptions());//弃用,改成在ConfigureServices中注入services.AddHangfireServer
    app.UseHangfireDashboard();//使用面板
    
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
}
  • 第三步:使用
//即发即弃的作业只执行一次,几乎在创建后 立即执行
var jobId = BackgroundJob.Enqueue(() => Console.WriteLine("Fire-and-forget!"));

//延迟任务执行
var jobId1 = BackgroundJob.Schedule(() => Console.WriteLine("Delayed!"),TimeSpan.FromDays(7));

//循环任务执行,周期任务
RecurringJob.AddOrUpdate("AngelRecurringJob", () => Console.WriteLine("重复!"), Cron.Daily);
  • 第四步:打开面板
    hangfire面板是在网站地址后面加hangfire:https://localhost:44398/hangfire/

主页
.Net 简单使用 Hangfire_第3张图片
服务器
.Net 简单使用 Hangfire_第4张图片

BackgroundJob.Enqueue 立即执行
.Net 简单使用 Hangfire_第5张图片
BackgroundJob.Schedule 延迟任务执行
.Net 简单使用 Hangfire_第6张图片
RecurringJob.AddOrUpdate 周期任务
.Net 简单使用 Hangfire_第7张图片

你可能感兴趣的:(.Net学习笔记,c#,visual,studio,开发语言)