我正在處理請求需要執行任務的Web API RESTful服務。我們使用Hangfire作爲一項工作執行該任務,如果失敗,將嘗試重試該任務多達10次。如何在Hangfire作業成功或失敗時執行新作業?
如果作業最終成功我想運行一個額外的作業(將事件發送到另一個服務)。如果在所有重試嘗試後作業都失敗,我想運行其他附加作業(將故障事件發送到其他服務)。
但是,我無法弄清楚如何做到這一點。我創建了以下JobFilterAttribute:
public class HandleEventsAttribute : JobFilterAttribute, IElectStateFilter
{
public IBackgroundJobClient BackgroundJobClient { get; set; }
public void OnStateElection(ElectStateContext context)
{
var failedState = context.CandidateState as FailedState;
if (failedState != null)
{
BackgroundJobClient.Enqueue<MyJobClass>(x => x.RunJob());
}
}
}
我遇到的一個問題是將IBackgroundJobClient注入到此屬性中。我不能將它作爲屬性傳遞給屬性(我得到「無法訪問靜態上下文中的非靜態字段'backgroundJobClient'」錯誤)。我們正在使用autofac進行依賴注入,並且我嘗試瞭解如何使用屬性注入,但是我不知所措。所有這些讓我相信我可能走錯了路。
我想如果一個Hangfire作業失敗,運行一些額外的清理代碼將是一個相當常見的模式。大多數人如何做到這一點?
感謝您的幫助。讓我知道是否有任何額外的細節,我可以提供。