Como obter os detalhes da exceção de um trabalho em segundo plano com falha com Hangfire
Nov 25 2020
Estou usando o Hangfire para disparar alguns trabalhos em segundo plano e, em seguida, estou verificando seu progresso procurando por trabalhos com falha usando:
IStorageConnection connection = JobStorage.Current.GetConnection();
JobData jobData = connection.GetJobData(jobId);
if (jobData.State == FailedState.StateName)
// Some how get exception details
Gostaria de obter a exceção lançada que causou a falha do trabalho. (Estou jogando new Exception("test error")
meu trabalho atualmente para testá-lo).
Não consigo encontrar nenhum documento ou exemplo de como posso obter essas informações, é possível?
Respostas
1 CodieCollinge Nov 25 2020 at 23:44
Depois de ver uma resposta para outra pergunta que usava o GetMonitoringApi, consegui usá-lo aqui para obter a mensagem de exceção assim:
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;
}
Isso me dá a "test error"
mensagem que foi lançada do meu trabalho. Sucesso!
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas