Hangfire EnqueuedJobs 参数

问题描述 投票:0回答:2

我正在尝试使用以下代码检索 Hangfire 中排队的作业:

IMonitoringApi monitor = JobStorage.Current.GetMonitoringApi();

var jobData = monitor.EnqueuedJobs(?, 0, 1);

api表示第一个参数是一个字符串(字符串队列)。我的问题是,该字符串队列表示什么以及如何获得它?谢谢

hangfire
2个回答
2
投票

它是您放置作业的队列的名称,因为您可以在 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/

如果你完成了请告诉我。


0
投票

要获取所有当前活动的排队作业,可以使用以下代码:

        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));
        }
© www.soinside.com 2019 - 2024. All rights reserved.