c# - 水平缩放的Hangfire

标签 c# asp.net-mvc azure hangfire

我想利用hangfire库来运行重复任务。为了简化这个问题。

我只想每5分钟运行1个任务。

我通常已设置hangfire。它指向我的数据库。然后,我将Web项目推送到我的Azure Web应用程序。所有运行都愉快。每隔5分钟我的任务就会运行一次。

但是现在当我的需求增加时,我去自动或手动将Web服务器扩展到3个实例。

该任务将在所有3个服务器实例上执行吗?

我如何设计它,以便任务仅一次执行,而不管哪个服务器或实例创建了该任务。

最佳答案

the docs


  可以在一个进程中运行多个服务器实例,
  一台计算机,或同时在多台计算机上。每个服务器使用
  分布式锁来执行协调逻辑。


即您将拥有3个Hangfire实例,但单个作业只能由其中一个执行,但是,每次可能不在同一台服务器上。为此,您可以遵循以下StackOverflow答案,其中涉及将作业分配给特定于您要在其上进行处理的服务器的队列:hangfire recurring job on every server

关于c# - 水平缩放的Hangfire,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44383174/

相关文章:

java - Azure 移动集成问题

c# - ASP.NET MVC 处理请求错误

asp.net-mvc - 如何使用 Ninject 拦截来拦截所有 ASP.NET WebApi Controller 操作方法调用以进行日志记录?

azure - 预定的网络作业

csv - 微软 Azure 的架构。 CSV 到 SQL

asp.net-mvc - 使用 RedirectToAction 时,routeValue 丢失引用属性

c# - 使用事件目录对用户进行身份验证并获取要在其他地方使用的 token

c# - CoCreateInstance 返回 "Class not registered"

c# - Exchange 和 PowerShell

c# - 应将包装的 EF 实体保存在哪个类中?