【问题标题】:Hangfire with horizontal scaling具有水平缩放的 Hangfire
【发布时间】:2017-06-06 06:51:25
【问题描述】:

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

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

我已经正常设置hangfire。它指向我的数据库。然后我将我的 web 项目推送到我的 azure web 应用程序。一切都运行得很愉快。我的任务每 5 分钟运行一次。

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

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

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

【问题讨论】:

  • 只是出于好奇,如果您使用 Azure,为什么不使用 Azure Functions 或 webjobs 来运行重复性任务?
  • 我使用的是天蓝色。我会调查这些。 ATM 项目全部包含在一个 Web 项目中,当所有代码都在同一个地方时,易于管理。

标签: c# asp.net-mvc azure hangfire


【解决方案1】:

来自the docs

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

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

【讨论】:

  • 好的,所以我想要的操作是默认内置的。
猜你喜欢
  • 2015-05-11
  • 2015-09-20
  • 2016-04-22
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多