Hangfire如何检索和显示所有存储的工作?



如何在没有UI的情况下检索和显示所有存储的作业?

这是我的第一次尝试:

[HttpGet("jobs")]
[ProducesResponseType(StatusCodes.Status200OK)]
public IActionResult GetJobs()
{
var monitoringApi = JobStorage.Current.GetMonitoringApi();
var jobDetails = monitoringApi.EnqueuedJobs();
var response = new List<object>();
foreach (var job in jobDetails)
{
response.Add(new
{
JobId = job.Key,
JobName = job.Value.Job.Type.FullName,
EnqueuedAt = job.Value.EnqueuedAt,
State = job.Value.State
});
}
return Ok(response);
}

选项#1 -使用MonitoringApi

您已经尝试过了,但是您必须使用此接口单独获取每个作业列表(已调度的、正在处理的、成功的等)。

不幸的是,没有一种简单的方法来制作一些通用的方法来检索一切,因为Hangfire将每个作业状态定义为没有共同基的不同类(例如EnqueuedJobDtoScheduledJobDto共享没有基类)。

选项#2 -直接从数据库获取信息

不言自明,但这可能取决于你为Hangfire使用的存储空间。

最新更新