Отправка задания зависания в определенную очередь - PullRequest
0 голосов
/ 15 сентября 2018

В настоящее время я использую Hangfire для постановки задач в очередь.Обычный способ поставить в очередь задание на отбой - использовать что-то вроде этого:

 BackgroundJob.Enqueue(() => DoWork());

, который затем войдет в очередь и выполнит это задание в "DEFAULT" очереди на отбой..

Однако я могу добавить в метод атрибут, который будет использоваться для определения, в какую очередь он будет помещен и исполнен:

    [Queue("SECONDARY")]
    public void DoWork()
    {

    }

Мой вопрос: Есть ли способ динамически / программно ставить в очередь задание на отбой в указанной очереди без использования вышеупомянутого атрибута метода?

1 Ответ

0 голосов
/ 17 сентября 2018

Вот некоторый псевдокод для вас.

https://api.hangfire.io/html/M_Hangfire_BackgroundJobClient_Create.htm

class Program
{
    static void Main(string[] args)
    {
        EnqueuedState queue = new EnqueuedState("myQueueName");
        new BackgroundJobClient().Create<Program>(c => c.DoWork(), queue);
    }

    public void DoWork()
    {

    }
}

Другой известный мне вариант - использовать интерфейс и косвенно использоватьприписывать.Смотрите псевдокод ниже:

 {
     interface IHangfireJob
     {
         [Queue("secondary")]
         void Execute();
     }
 }

 class Program : IHangfireJob
 {
     static void SomeMainMethod()
     {
        BackgroundJob.Enqueue(() => Execute());
     }

     public void Execute()
     {
        Console.WriteLine("Fire-and-forget!");
     }
 }
...