具有水平缩放的Hangfire

时间:2017-06-06 06:51:26

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

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

我只想每5分钟运行一次任务。

我正常设置hangfire。它指向我的数据库。然后我将我的web项目推送到我的Azure应用程序。所有人都愉快地奔跑着。每隔5分钟我的任务就会运行。

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

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

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

1 个答案:

答案 0 :(得分:3)

来自the docs

  

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

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