我想问一下是否有办法定义 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" } });
Run Code Online (Sandbox Code Playgroud)
Web 应用 HangFire 作业:
var client = new BackgroundJobClient();
var state = new EnqueuedState("web_app_queue");
var jobId = client.Create(methodCall, state);
Run Code Online (Sandbox Code Playgroud)
Windows 服务 HangFire 服务器:
var server = new BackgroundJobServer();
Run Code Online (Sandbox Code Playgroud)
Windows 服务 HangFire 作业:
private static void AddRecurringJob<T>(string cronExpression) …
Run Code Online (Sandbox Code Playgroud)