Hangfireで失敗したバックグラウンドジョブの例外の詳細を取得する方法

Nov 25 2020

私はHangfireを使用していくつかのバックグラウンドジョブを起動し、次を使用して失敗したジョブを探して進行状況を確認しています。

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

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

ジョブが失敗する原因となった例外がスローされるようにしたいと思います。(私はnew Exception("test error")現在それをテストするために私の仕事を投入しています)。

この情報を取得する方法に関するドキュメントや例が見つからないようですが、可能ですか?

回答

1 CodieCollinge Nov 25 2020 at 23:44

GetMonitoringApiを使用した別の質問に対する回答を見ここでそれを使用して、次のような例外メッセージを取得することができました。

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

これは私の"test error"仕事から投げられたメッセージを私に与えます。成功!