我需要手动配置重试之间的时间。我无法找到方法。
但我找到了来自https://github.com/HangfireIO/Hangfire/blob/master/src/Hangfire.Core/AutomaticRetryAttribute.cs
的代码在完成最大重试次数后调度作业。
public static readonly int DefaultRetryAttempts = 10;
我已将上面的属性DefaultRetryAttemts
更改为3
而不是10
,然后它还会为单个作业重试10次
'重试尝试7 of 10:导入数据时出错'
我的要求是进行5次重试尝试,并在每次重试后提供20分钟的延迟。
答案 0 :(得分:0)
此功能已在Hangfire中继中合并,应在1.7版中提供。见the pull request
您可以查看拉取请求并检索AutomaticRetryAttribute
的代码以构建您自己的自定义属性。
答案 1 :(得分:0)
This feature已合并到1.7 beta版。对于想尽早使用该功能的人,请将new AutomaticRetryAttribute code复制到您的项目中,将其重命名为AutomaticRetryExtAttribute并将这两个属性都应用于您的工作。
[AutomaticRetry(Attempts = 0)]用于防止它在失败时重新计划作业。这很重要,因为我们希望AutomaticRetryExt来处理重新安排。
[AutomaticRetry(Attempts = 0)]
[AutomaticRetryExt(Attempts = 30, DelaysInSeconds=new int[] { 300 })]
public static async Task Download(string fileName)
{
}
答案 2 :(得分:0)
如果您想将其设为全局,可以通过在启动配置中添加全局过滤器来实现:
GlobalJobFilters.Filters.Add(new AutomaticRetryAttribute { Attempts = 5, DelaysInSeconds = new int[] { 300 } });
您甚至可以通过以下方式指定每个重试超时:
DelaysInSeconds = new int[] { 300, 400, 500, 600, 700 }