Jak uzyskać szczegóły wyjątku nieudanej pracy w tle w Hangfire

Nov 25 2020

Używam Hangfire do odpalania niektórych zadań w tle, a następnie sprawdzam ich postęp w poszukiwaniu nieudanych zadań za pomocą:

IStorageConnection connection = JobStorage.Current.GetConnection();
JobData jobData = connection.GetJobData(jobId);

if (jobData.State == FailedState.StateName)
   // Some how get exception details

Chciałbym, aby wyrzucono wyjątek, który spowodował niepowodzenie zadania. ( new Exception("test error")Obecnie wrzucam swoją pracę, aby ją przetestować).

Nie mogę znaleźć żadnych dokumentów ani przykładów, w jaki sposób mogę uzyskać te informacje, czy to możliwe?

Odpowiedzi

1 CodieCollinge Nov 25 2020 at 23:44

Po zobaczeniu odpowiedzi na inne pytanie, które korzystało z GetMonitoringApi, mogłem go użyć tutaj, aby uzyskać następujący komunikat o wyjątku:

if (jobData.State == FailedState.StateName)
{
  var failedJobsCount = JobStorage.Current.GetMonitoringApi()
      .FailedCount();

  var failedJob = JobStorage.Current.GetMonitoringApi()
      .FailedJobs(0, (int)failedJobsCount)
      .Where(j => j.Key == jobId)
      .SingleOrDefault();
  
  var exceptionMsg = failedJob.Value.ExceptionMessage;
}

To daje mi "test error"wiadomość, która została wyrzucona z mojej pracy. Powodzenie!