在我的ASP.NET MVC应用程序中,我将运行后台任务,有时持续约10分钟。我已经阅读了这个主题并看到应用程序域有时会重新启动,因此删除了我的主题。
因此我找到了一些解决方案。我找到的主要解决方案是Hangfire。我知道它会在失败等情况下重新启动作业,但是他们会以某种方式“绕过”应用程序域重新启动,还是只在这种情况下重新启动作业?
答案 0 :(得分:5)
我找到的主要解决方案是Hangfire。我明白了 当他们失败等时重新开始工作,但他们是否会绕过"绕过"该应用程序 以某种方式重新启动域名,还是在这种情况下重新启动作业?
不,他们不会绕过app域重启 - 没有什么可以绕过它。引自documentation:
Hangfire会保留后台作业和其他相关信息 持久存储中的处理。持久性有帮助 后台作业在应用程序重启时生存,服务器重启, 这是执行后台作业之间的主要区别 使用CLR的线程池和Hangfire。不同的存储后端是 支撑。
因此,当您将新任务排入队列时,首先要将其存储在服务器上的某个持久存储中,而不将其保留在内存中。这样,如果应用程序域死亡,则可以在以后从此持久存储中读取和恢复该任务。