使用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,来查看任务,例如:
界面的访问授权
- 默认不允许匿名用户访问
- 可以指定本地参数 HangfireDashboard_AllowAnonymous=1 来允许匿名用户访问
- 仅允许已登录用户访问
- 用户登录界面与登录实现过程,由宿主程序提供
- 登录实现过程可参考:用户登录
查看执行日志
在 Kibana 中查看 Hangfire 作业的日志
- 查看【全部】作业可以指定过滤条件 oprKind : ntask
- 查看【失败】作业可以指定过滤条件 oprKind : ntask and hasError : 1