Hangfire如何处理应用程序域重启?

Jen*_*112 0 asp.net asp.net-mvc appdomain backgroundworker hangfire

在我的ASP.NET MVC应用程序中,我将运行后台任务,有时持续约10分钟.我已经阅读了这个主题,看到应用程序域有时会重新启动,从而删除我的线程.

所以我找了一些解决方案.我找到的主要解决方案是Hangfire.我知道它会在失败等情况下重新启动作业,但是他们会以某种方式"绕过"应用程序域重新启动,还是只在这种情况下重新启动作业?

Dar*_*rov 5

我找到的主要解决方案是Hangfire.我知道它会在失败等情况下重新启动作业,但是他们会以某种方式"绕过"应用程序域重新启动,还是只在这种情况下重新启动作业?

不,他们没有绕过app域重启 - 没有什么可以绕过它.从文档中引用:

Hangfire会保留后台作业以及与持久存储中的处理相关的其他信息.持久性有助于后台作业在应用程序重新启动,服务器重新启动等时继续存在.这是使用CLR的线程池和Hangfire执行后台作业之间的主要区别.支持不同的存储后端.

因此,当您将新任务排入队列时,首先要将其存储在服务器上的某个持久存储中,而不将其保留在内存中.这样,如果应用程序域死亡,则可以稍后从该持久存储中读取并恢复该任务.