c# - Hangfire 具有水平缩放功能

标签 c# asp.net-mvc azure hangfire

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

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

我已经正常设置hangfire。它指向我的数据库。然后,我将我的 Web 项目推送到我的 azure Web 应用程序。一切都进展顺利。每 5 分钟我的任务就会运行一次。

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

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

我如何设计它,以便任务只执行一次,无论哪个服务器或实例创建了该任务。

最佳答案

来自the docs :

It is possible to run multiple server instances inside a process, machine, or on several machines at the same time. Each server use distributed locks to perform the coordination logic.

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

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

相关文章:

c# - 访问按钮内的 TextBlock.Text

c# - ASP.NET MVC 应用程序变量?

c# - Html.BeginForm 内的 System.StackOverflowException

Azure 服务总线主题订阅 - 根据 JSON 编码的消息正文属性进行筛选

azure - 记住 Azure Active Directory Xamarin Forms 中上次登录的用户

javascript - JSON.stringify 不生成正确的 json

c# - 运算符 '&&' 不能应用于类型 'System.DateTime' 和 'System.DateTime' 的操作数

c# - 如果角色包含空格,如何编写 AuthorizeAttribute

c# - 在 C# 中使用 RazorViewEngine 的转换功能

azure - 如何在 Azure 中为 Kubernetes Ingress Controller 创建负载均衡器 (IAAS)