我正在尝试使用以下代码检索 Hangfire 中排队的作业:
IMonitoringApi monitor = JobStorage.Current.GetMonitoringApi();
var jobData = monitor.EnqueuedJobs(?, 0, 1);
api表示第一个参数是一个字符串(字符串队列)。我的问题是,该字符串队列表示什么以及如何获得它?谢谢
它是您放置作业的队列的名称,因为您可以在 Hangfire 中创建尽可能多的队列。
var options = new BackgroundJobServerOptions
{
Queues = new[] { "critical", "default" }
};
app.UseHangfireServer(options);
这里有两个队列,一个是关键的,第二个是默认的
因此,如果您没有创建任何队列,那么您将通过默认值,因为默认队列就是默认队列。
将函数实现为
public JobList<EnqueuedJobDto> EnqueuedJobs(string queue, int @from, int perPage)
{
return UseConnection(connection =>
{
var queueApi = GetQueueApi(connection, queue);
var enqueuedJobIds = queueApi.GetEnqueuedJobIds(queue, from, perPage);
return EnqueuedJobs(connection, enqueuedJobIds);
});
}
此处实现链接https://searchcode.com/codesearch/raw/97584324/
如果你完成了请告诉我。
要获取所有当前活动的排队作业,可以使用以下代码:
var monitoringApi = JobStorage.Current.GetMonitoringApi();
var jobs = new List<Job>();
foreach (var queue in monitoringApi.Queues())
{
jobs.AddRange(monitoringApi.EnqueuedJobs(queue.Name, 0, 999).Select(x => x.Value.Job));
}