Hangfire - 具有指定队列名称的重复作业

时间:2016-09-13 11:49:43

标签: hangfire

我有两个服务器,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”方法中删除队列覆盖,则会执行作业(显然没有配置队列)。

缺少什么?如何使用队列配置配置重复作业?

2 个答案:

答案 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");