繁体   English   中英

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

[英]How to schedule a Hangfire background job on a specific time AND in a specific queue?

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

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

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

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

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

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

您可以使用为methodCall定义队列名称的参数。 根据此处的讨论,您可以有选择地在您选择的队列上运行该方法。 UseQueueFromParameter应该可以解决您面临的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM