我有一个带有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()作业。
请建议。 感谢。
答案 0 :(得分:0)
您可以尝试使用此方法来增加工作进程。您必须知道服务器上运行的处理器数量。要获得100名员工,您可以尝试
var options = new BackgroundJobServerOptions { WorkerCount = Environment.ProcessorCount * 25 };
app.UseHangfireServer(options);
答案 1 :(得分:0)
在.NET Core版本中,您可以在添加Hangfire服务器时设置工作人员计数:
services.AddHangfireServer(options => options.WorkerCount = 50);