如何从PerformContext获取Hangfire中后台作业的总重试次数?

时间:2018-06-14 14:55:10

标签: c# hangfire

从这篇文章:

How do I get the current attempt number on a background job in Hangfire?

可以使用魔术字符串“RetryCount”来获取重试次数。

public void SendEmail(PerformContext context, string emailAddress)
{
   string jobId = context.BackgroundJob.Id;
   int retryCount = context.GetJobParameter<int>("RetryCount");
   // send an email
}

如果我需要获得总重试次数怎么样? 我可以使用类似的东西:

int retries = context.GetJobParameter<int>("Retries");

或者如何从“PerformContext”中获取该信息(如果可能的话)?

我需要定义总重试次数,因此我可以在最后一次重试时执行一些任务。

1 个答案:

答案 0 :(得分:0)

如果您使用AutomaticRetryAttribute来定义某个方法的重试次数,则将执行以下操作:

var retryAttempts = context.BackgroundJob.Job.Method.GetCustomAttributes(typeof(AutomaticRetryAttribute), false)
    .Cast<AutomaticRetryAttribute>()
    .Select(a => a.Attempts)
    .FirstOrDefault();

如果该属性不存在,则它将返回0。如果全局重新设置最大重试次数或以后在属性中修改最大重试次数,则无济于事。