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!