"Logging": {
"LogLevel.Default": "Information",
"LogLevel.System": "Information",
"LogLevel.Microsoft": "Information"
}
这将提高日志级别,以确定何时和为什么Hangfire作业被卡住。
RecurringJob.RemoveIfExists("jobId");
RecurringJob.AddOrUpdate("jobId", () => Console.WriteLine("Hello, world!"), Cron.Minutely);
请替换“jobId”为受影响的作业id。此解决方法的核心是先删除受影响的作业,然后重新添加它。
public void ConfigureHangfire(IApplicationBuilder app)
{
app.UseHangfireServer();
var options = new BackgroundJobServerOptions
{
WorkerCount = Environment.ProcessorCount * 5, //开启足够的工人,以确保不会出现长时间等待任务
Queues = new[] { "critical", "default" } //设置优先级队列,以便高优先级的作业在队列中排队
};
app.UseHangfireServer(options);
var recurringJobManager = new RecurringJobManager();
recurringJobManager.AddOrUpdate("jobId", Job.FromExpression(() => Console.WriteLine("Hello, world!")), Cron.Minutely);
}
这将配置Hangfire服务器以适应容器环境,并添加一个RecurringJob。