.Net Core Hangfire - 增加工人数量

时间:2018-05-16 12:01:34

标签: parallel-processing .net-core worker hangfire

我有一个带有Hangfire实现的.Net Core应用程序。

每分钟有一份经常性工作如下: -

RecurringJob.AddOrUpdate<IS2SScheduledJobs>(x => x.ProcessInput(), Cron.MinuteInterval(1));

var hangfireOptions = new BackgroundJobServerOptions
            {
                WorkerCount = 20,
            };
            _server = new BackgroundJobServer(hangfireOptions);

ProcessInput()在内部检查要处理的一些ID的BlockingCollection(),它继续处理。

有一段时间,前十个ProcessInput()作业继续处理10个工作程序,而其他新的ProcessInput()作业被排队。

为此,我想增加工人数量,比如大约50,这样就可以平行处理50个ProcessInput()作业。

请建议。 感谢。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用此方法来增加工作进程。您必须知道服务器上运行的处理器数量。要获得100名员工,您可以尝试

var options = new BackgroundJobServerOptions { WorkerCount = Environment.ProcessorCount * 25 };
app.UseHangfireServer(options);

Source

答案 1 :(得分:0)

在.NET Core版本中,您可以在添加Hangfire服务器时设置工作人员计数:

services.AddHangfireServer(options => options.WorkerCount = 50);