Несколько очередей (серверов) с разным количеством рабочих в Hangfire - PullRequest
0 голосов
/ 19 сентября 2019

Я пытался создать несколько очередей, и в каждой очереди должно быть только одно количество рабочих.Итак, я сделал следующий код:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
            app.UseHangfireDashboard("/scheduler", new DashboardOptions
            {
                Authorization = new[] { new HangFireAuthorization() },
                AppPath = "/"
            });

            app.UseHangfireServer(new BackgroundJobServerOptions()
            {
                ServerName = string.Format("{0}:facebookqueue", Environment.MachineName),
                Queues = new[] { "facebookqueue" },
                WorkerCount = 1
            });

            app.UseHangfireServer(new BackgroundJobServerOptions()
            {
                ServerName = string.Format("{0}:googlequeue", Environment.MachineName),
                Queues = new[] { "googlequeue" },
                WorkerCount = 1
            });


            RecurringJob.AddOrUpdate<IScheduledJobs>(recurringJobId: 
            "FacebookExtractorJobYesterday",
            methodCall: services => services.RecurringJobYesterday(null, 
            JobCancellationToken.Null),
            cronExpression: cronExp, timeZone: TimeZoneInfo.Local, queue: "facebookqueue");

            RecurringJob.AddOrUpdate<IGoogleScheduledJobs>(recurringJobId: 
            "GoogleExtractorJobYesterday",
             methodCall: services => services.RecurringJobYesterday(null, 
             JobCancellationToken.Null),
             cronExpression: cronExp, timeZone: TimeZoneInfo.Local, queue: "googlequeue");
}

Вышеприведенный код решил мою задачу, и он добавил два сервера с разными очередями, и каждая очередь имеет одно число рабочих, так что каждое задание может выполняться в своей очереди и вызыватькаждая очередь (сервер) имеет только одно число рабочих, одно и то же задание никогда не будет выполняться дважды одновременно.enter image description here

Но каждый раз, когда какое-либо задание не выполняется и предпринимается попытка повторения, оно ставится в очередь по умолчанию.enter image description here

Я хочу, чтобы каждое задание ставилось в очередь в своей собственной очереди (на сервере).

Я буду очень благодаренза любую помощь.

...