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