我使用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的“默认”队列中结束。你知道我如何实现作业调度延迟,同时能够在运行时确定队列吗?
发布于 2021-06-11 02:28:36
您可以使用参数来定义methodCall的队列名称。基于discussion here,您可以有选择地在您选择的队列上运行该方法。UseQueueFromParameter应该能解决你所面临的问题
https://stackoverflow.com/questions/67890777
复制相似问题