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