Hangfire 仪表板自定义:显示带有队列名称的作业列表

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

我想自定义 Hangfire 仪表板来显示作业列表以及它们曾经、现在或将要排队的队列及其状态。 我还没有在 IMonitoringApi 接口中找到任何方法来执行多个作业,我越接近:

  1. 使用 IMonitoringApi 的 JobDetails 方法:它获取一个作业及其队列,但它只针对一个作业执行此操作,我不想循环它,因为它会生成太多请求。
  2. 使用 IMonitoringApi 的 SucceededJobs、FailedJobs 等方法。除其他外,它们都返回包含方法及其详细信息的作业对象,其中将要排队的队列。但是代码不是很健壮,而且这是一种扭曲的方式来获取某些东西,当它应该时非常简单。
  3. 使用
  4. EnqueuedJobs 方法:它返回指定队列中的所有作业,但据我了解,如果作业不再“排队”,它将被忽略。
所以,目前,我的猜测是要么创建自己的 IMonitoringApi 实现并向其添加从 JobDetails 方法派生的方法,要么尝试以更可靠的方式获取 Job 方法的信息。

有什么我错过的吗?你会采取什么方式来做到这一点?

c# queue customization dashboard hangfire
1个回答
0
投票
我正在使用

IMonitoringApi

来获取预定的工作,事实证明它对我来说非常可靠。我正在查询特定职位的结果,但没有理由使用它来显示所有职位。

以下是获取所有当前安排的作业的方法:

Hangfire.Storage.Monitoring.JobList<Hangfire.Storage.Monitoring.ScheduledJobDto> scheduledJobs = _monitoringApi.ScheduledJobs(0, int.MaxValue);
然后用它做任何你想做的事。

有多个列表,也许这让您烦恼,但是将它们全部调用起来很简单。以下是您可以从

IMonitoringApi

 获得的工作列表以及其他属性:

JobList<EnqueuedJobDto> EnqueuedJobs(string queue, int from, int perPage); JobList<FetchedJobDto> FetchedJobs(string queue, int from, int perPage); JobList<ProcessingJobDto> ProcessingJobs(int from, int count); JobList<ScheduledJobDto> ScheduledJobs(int from, int count); JobList<SucceededJobDto> SucceededJobs(int from, int count); JobList<FailedJobDto> FailedJobs(int from, int count); JobList<DeletedJobDto> DeletedJobs(int from, int count);
    
© www.soinside.com 2019 - 2024. All rights reserved.