Hangfire, как извлечь все задания

  • Михаил
  • 8 мин. на прочтение
  • 30
  • 16 Oct 2023
  • 16 Oct 2023

Чтобы извлечь и отобразить все сохраненные задания с помощью Hangfire без пользовательского интерфейса, выполните следующие действия:

1. В вашем коде C# создайте новый маршрут конечной точки HTTP GET с путем «/jobs». Он будет обрабатывать запрос на получение заданий.

[HttpGet("jobs")]
[ProducesResponseType(StatusCodes.Status200OK)]
public IActionResult GetJobs()
{
   // Step 2
}

2. Внутри метода конечной точки обратитесь к JobStorage.Currentобъекту MonitoringApi, который предоставляет методы для запроса заданий Hangfire.

var monitoringApi = JobStorage.Current.GetMonitoringApi();

3. Используйте EnqueuedJobs метод объекта MonitoringApiдля получения сведений о задании. Этот метод возвращает словарь, где ключом является идентификатор задания, а значением — сведения о задании.

var jobDetails = monitoringApi.EnqueuedJobs();

4. Инициализируйте объект ответа, например List<object>, , для хранения полученных сведений о задании.

var response = new List<object>();

5. Пройдитесь по jobDetailsсловарю и извлеките информацию о задании, которую вы хотите отобразить. В этом примере мы включаем идентификатор задания, имя задания, поставленную в очередь временную метку и состояние задания.

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
   });
}

6. Верните объект ответа как HTTP-ответ, используя Okметод интерфейса IActionResult.

return Ok(response);

Реализовав эти шаги, вы сможете успешно извлекать и отображать все сохраненные задания с помощью Hangfire без использования пользовательского интерфейса.