Hangfire - 每次代码更改时都会显示新服务器

时间:2018-04-28 13:29:59

标签: hangfire

我是Hangfire的新手。我让它在开发机器上工作,但每次我更改代码并运行应用程序(asp.net Core 2 MVC)时 - 仪表板上的列表中会出现一个新服务器。

我在文档中找不到任何相关内容 - 或者在示例文件中找不到任何内容。我已经阅读了关于取消令牌但这些似乎是故意关机请求而不是代码更新?!

这是预期的行为吗?我希望每次更新代码时都在IIS中手动重启应用程序(显然在服务器上比dev机器更重要)。

感谢。

1 个答案:

答案 0 :(得分:1)

找到了一个围绕@ link的工作,这对我有用。感谢ihockett。

<强> TLDR

  

我知道这是一个非常古老的话题,但我遇到了类似的问题。我想为解决由于服务器关闭而中止的作业做出贡献。如果禁用自动重试(尝试次数= 0),或者由于服务器关闭而导致作业失败并超出最大尝试次数,则可能会遇到此问题。不幸的是,这导致新作业无法开始处理,直到中止的作业被手动删除或重新排队。

     

基本上,我采用以下方法自动处理已中止的作业:在启动期间和初始化BackgroundJobServer之后,我使用MonitoringApi来获取所有当前正在处理的作业。如果有,我遍历每个并调用BackgroundJob.Requeue(jobId)。这是代码,供参考:

var monitor = Hangfire.JobStorage.Current.GetMonitoringApi();                
if (monitor.ProcessingCount() > 0)
{                    
    foreach (var job in monitor.ProcessingJobs(0, (int)monitor.ProcessingCount()))
    {
        BackgroundJob.Requeue(job.Key);                        
    }
}