我有两个服务器,ServerA和ServerB。它们共享相同的hangfire数据库。 我有两份工作,JobA和JobB。
在ServerA上,我使用:
RecurringJob.AddOrUpdate(
"JobA",
() => new JobA().Execute(),
this._configuration.Schedule, queue: "A");
在ServerB上,我使用:
RecurringJob.AddOrUpdate(
"JobB",
() => new JobB().Execute(),
this._configuration.Schedule, queue: "B");
问题是每个作业都在“作业”表中“排队”,它们永远不会被执行。
如果我在“AddOrUpdate”方法中删除队列覆盖,则会执行作业(显然没有配置队列)。
缺少什么?如何使用队列配置配置重复作业?
答案 0 :(得分:1)
代码丢失......
服务器A:
var options = new BackgroundJobServerOptions
{
Queues = new[] { "A" }
};
this._backgroundJobServer = new BackgroundJobServer(options);
服务器B:
var options = new BackgroundJobServerOptions
{
Queues = new[] { "B" }
};
this._backgroundJobServer = new BackgroundJobServer(options);
答案 1 :(得分:1)
解决方案 - 可能会帮助有类似问题的人:
app.UseHangfireServer(new BackgroundJobServerOptions
{
// queue name must be in lowercase
Queues = new[] { "qname" } //This will setup the server to only process qname queues
});
RecurringJob.AddOrUpdate(
() => new JobB().Execute(),
Cron.Hourly(5),
null,
"qname");