我想问一下是否有一种方法可以定义HangFire服务器不应该处理重复作业?
有两个应用程序(Windows服务和Web应用程序)使用HangFire运行后台作业,因此有两个hangfire服务器(正确定义了队列)。
服务仅创建重复性作业,并且正在使用“默认”队列。Web应用程序创建了“一劳永逸”的作业,并且正在使用其他队列(例如web_app_queue)。
尽管为其他队列定义了Web应用程序创建的HangFire服务器,但它似乎正尝试调度/处理重复作业,但是Web应用程序HangFire服务器无法访问Windows服务可用的必需程序集。
Web App HangFire服务器:
var backgroundJobServer = new BackgroundJobServer(new BackgroundJobServerOptions { Queues = new[] { "web_app_queue" } });
Web App HangFire作业:
var client = new BackgroundJobClient();
var state = new EnqueuedState("web_app_queue");
var jobId = client.Create(methodCall, state);
Windows服务HangFire服务器:
var server = new BackgroundJobServer();
Windows Service HangFire作业:
private static void AddRecurringJob<T>(string cronExpression) where T : IJob
{
RecurringJob.AddOrUpdate<T>(job => job.Execute(), cronExpression, TimeZoneInfo.Local);
}
未为Windows Service HangFire服务器和作业定义队列名称,因此应用了默认队列(“默认”)。
相关分类