首页 > 解决方案 > 在横向扩展的情况下,我们如何让重复作业仅在一个实例上触发

问题描述

我使用 Hangfire 从 FTP 服务器读取文件,并且我有多个服务器实例要从 FTP 读取。我只需要在一个实例上触发重复作业,以防止从同一个文件中读取同一个作业。

var jobId = BackgroundJob.Enqueue<FtpImageJob>(j => j.ExecuteAsync(null, device.NumericId, device.DeviceId, device.VehicleId, device.TenantId));
                BackgroundJob.ContinueJobWith<FtpDeleteJob>(jobId, j => j.ExecuteAsync(null, numericId), JobContinuationOptions.OnAnyFinishedState);

标签: c#asp.net-mvcftphangfirehangfire-autofac

解决方案


如果您希望将作业的执行限制在众多 Hangfire 服务器中的一个,请使用仅存在于一台服务器上的单独队列。这样,您的重复作业将仅在为该队列提供服务的挂火服务器上执行。


推荐阅读