Hangfire如何为Web场工作?

时间:2016-10-06 06:44:35

标签: asp.net hangfire

我试图准确理解如果在Web场中使用Hangfire将如何表现,其中每个ASP.NET应用程序配置相同,并且有N个实例使用相同的共享SQL Server数据库进行Hangfire存储。 / p>

文档只是说分布式锁用于防止竞争条件,但这有点低级,我需要了解这在实践中意味着什么。

示例:

如果我有5个Web服务器实例,并且我创建了一个后台作业,其日程安排将在每天下午5点运行一次,这是否意味着获得“锁定”的第一个实例是'在工作中最终会运行它,所有其他实例将在锁定时忽略该作业吗?

我假设Hangfire一次只允许一个实例处理一个工作,但我还没有确认。

如果我真的想同时在每个服务器实例上运行作业呢?

如果有人在网络农场中有任何Hangfire的实践经验,我会全力以赴。

1 个答案:

答案 0 :(得分:2)

这些是我在经过更多研究和测试后建立的基本规则:

  • Hangfire将在第一台具有可用容量的Hangfire服务器上执行后台作业,该服务基于该服务器上的工作线程数

  • Hangfire将继续在该服务器上执行后台作业,直到工作池达到饱和状态,此时它将移动到服务器场中的下一个可用服务器,依此类推

  • 如果Hangfire服务器使用相同的Hangfire存储实例,它们将自动包含在Web场中,因此一般而言,无需额外配置。

  • 如果要在特定服务器上运行特定后台作业或使用不同的工作负载分配算法,可以使用命名队列,其中队列具有名称并可能分配给特定服务器实例,后台作业必须也计划在该队列上运行。