我想利用 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/