hangfire 后台作业失败并耗尽其最大重试次数后如何执行操作

问题描述 投票:0回答:1

我有一个操作作为 Hangfire 后台作业执行,如下所示:

var jobId = BackgroundJob.Enqueue(() => PerformActionA(param1, param2));

如果 jobId 的作业失败并达到最大重试次数,我想发送电子邮件通知:

NotifyUser.NotifyAboutFailedPerformActionAsync();

作业失败后如何执行此通知服务?我正在创建各种作业,因此我只想为此操作 PeformActionA 执行此电子邮件通知。

我是 Hangfire 新手。

postgresql asp.net-core asp.net-web-api hangfire email-notifications
1个回答
0
投票

您可以使用

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();
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.