如何在特定时间和特定队列中安排 Hangfire 后台作业?

时间:2021-06-08 16:14:23

标签: c# hangfire

我使用 Hangfire 来安排作业。在我的设置中,我定义了两个不同的队列。一种用于处理循环作业和具有“低”优先级的作业。另一个队列用于具有“高”优先级的作业,这些作业是根据用户输入临时创建的。非循环作业按这样安排,以确保它们最终进入正确的队列:

var client = new BackgroundJobClient();
var state = new EnqueuedState(queueName);
client.Create(methodCall, state);

一切正常,但现在我有一个新要求,我需要在某些条件下延迟执行“高优先级”作业。

我在 Stack Overflow 上发现了 this 问题,其中提到 BackgroundJobClient.Schedule 操作接受一个 enqueueAt 参数:

var client = new BackgroundJobClient();
client.Schedule(methodCall, enqueueAt);

不幸的是,这个 Schedule 操作没有为我提供定义队列的选项。使用这种方法安排的作业最终会出现在 Hangfire 的“默认”队列中。知道如何实现作业调度延迟以及在运行时确定队列的能力吗?

1 个答案:

答案 0 :(得分:0)

您可以使用为 methodCall 定义队列名称的参数。基于 discussion here,您可以有选择地在您选择的队列上运行该方法。 UseQueueFromParameter 应该可以解决您面临的问题