我目前正在使用hangfire排队工作。 排队执行hangfire作业的常规方法是使用类似以下的方法:
BackgroundJob.Enqueue(() => DoWork());
然后将在“ DEFAULT” hangfire队列中进行排队并执行此作业。
但是我可以向该方法添加一个属性,该属性将用于确定将其放置并执行的队列:
[Queue("SECONDARY")]
public void DoWork()
{
}
我的问题: 有没有一种方法可以在不使用上述方法属性的情况下,以动态方式/编程方式对指定队列中的hangfire作业进行排队?
答案 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!");
}
}