【发布时间】:2021-06-08 16:14:23
【问题描述】:
我使用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);
很遗憾,此调度操作没有为我提供定义队列的选项。使用这种方法安排的作业最终会出现在 Hangfire 的“默认”队列中。知道如何实现作业调度延迟以及能够在运行时确定队列吗?
【问题讨论】: