我有一个操作作为 Hangfire 后台作业执行,如下所示:
var jobId = BackgroundJob.Enqueue(() => PerformActionA(param1, param2));
如果 jobId 的作业失败并达到最大重试次数,我想发送电子邮件通知:
NotifyUser.NotifyAboutFailedPerformActionAsync();
作业失败后如何执行此通知服务?我正在创建各种作业,因此我只想为此操作 PeformActionA 执行此电子邮件通知。
我是 Hangfire 新手。
您可以使用
ContinueJobWith
执行处理程序来检查作业完成状态是否为“失败”。
public void ExecuteJob()
{
var jobId = BackgroundJob.Enqueue(() => PerformActionA(param1, param2));
BackgroundJob.ContinueJobWith(jobId, () => FailureHandler(jobId), JobContinuationOptions.OnAnyFinishedState);
}
public void FailureHandler(string jobId)
{
var jobState = JobStorage.Current.GetMonitoringApi().JobDetails(jobId).History.FirstOrDefault()?.StateName;
if (jobState == "Failed")
{
Console.WriteLine("The job failed. Running failure handler.");
//NotifyUser.NotifyAboutFailedPerformActionAsync();
}
}