将hangfire作业发送到特定队列

时间:2018-09-15 19:38:13

标签: c# hangfire

我目前正在使用hangfire排队工作。 排队执行hangfire作业的常规方法是使用类似以下的方法:

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

然后将在“ DEFAULT” hangfire队列中进行排队并执行此作业。

但是我可以向该方法添加一个属性,该属性将用于确定将其放置并执行的队列:

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

    }

我的问题: 有没有一种方法可以在不使用上述方法属性的情况下,以动态方式/编程方式对指定队列中的hangfire作业进行排队?

1 个答案:

答案 0 :(得分:0)

这是给您的一些伪代码。

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!");
     }
 }