使用Hangfire

第一步,在启动时指定 EnableHangfire = true

public class Program
{
    public static void Main(string[] args)
    {
        AppStartOption startOption = new AppStartOption {

            // 启用 Hangfire
            EnableHangfire = true,
        };
        
        AppStartup.RunAsWebsite("XDemo.WebSiteApp", args, startOption);
    }        
}

说明:

  • 应用的启动方式不能是:AppStartup.RunAsConsole,因为 Hangfire 依赖于 ASP.NET 环境



第二步,开发任务

internal class Task2 : NormalTask
{
    public override void Execute()
    {
        // 从数据库或者其它地方获取作业的执行参数
        // var args = LoadArgsFromDB(.....)

        // 执行具体作业内容
        HttpOption httpOption = new HttpOption {
            //Url = "http://tucao.mingyuanyun.com:1088/recommend.aspx",
            Url = "/1overall/home.html",
        };
        httpOption.Send();
    }
}

说明:

  • 后台任务的基类必须是 NormalTask,否则Nebula不会记录执行日志



第三步,在运行时添加临时任务

public string Test1()
{
    // 添加一个临时性作业
    return BackgroundJob.Enqueue<Task2>(x => x.Run(null));
}



查看后台任务

可以访问 http://xxxxxxxxx/hangfire/recurring,来查看任务,例如:

xx


界面的访问授权
  • 默认不允许匿名用户访问
    • 可以指定本地参数 HangfireDashboard_AllowAnonymous=1 来允许匿名用户访问
  • 仅允许已登录用户访问
    • 用户登录界面与登录实现过程,由宿主程序提供
    • 登录实现过程可参考:用户登录





查看执行日志

在 Kibana 中查看 Hangfire 作业的日志

  • 查看【全部】作业可以指定过滤条件 oprKind : ntask
  • 查看【失败】作业可以指定过滤条件 oprKind : ntask and hasError : 1

xx