水平缩放的 Hangfire

Hangfire with horizontal scaling

我想利用 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 实例,但单个作业只会由其中一个执行,但是,这可能不会每次都在同一台服务器上。为此,您可以遵循 Whosebug 的回答,其中涉及将作业分配到特定于您希望处理发生的服务器的队列: