![](/img/trans.png)
[英]HangFire with Castle Windsor use of dependencies in background job
[英]How to use await with hangfire background job?
我正在使用.net core 2.1的hangfire。 現在的問題是我正在使用httpclient發出多個Web請求,而hangfire不支持我認為的異步方法。 因此,響應將在所有Web請求完成之前返回。 我評論了這一行:
_backgroundJob.Enqueue(() => EnqueueMyMethodCallBack(email));
並使用此行:
await EnqueueMyMethodCallBack(email)
然后工作正常。 那么有什么方法可以等待_backgroundJob.Enqueue? 我也發現了這篇文章https://www.hangfire.io/blog/2016/07/16/hangfire-1.6.0.html ,其中寫道,現在支持異步方法,但我仍然不能使用它們。
和EnqueueMyMethodCallBack方法:
public async Task<bool> EnqueueMyMethodCallBack(string email)
{
var response = await _userRepo.GetUser(email);
if(response == null)
return false;
var template = await _template.GetTemplate();
await _email.Send(template, email);
return true;
}
有什么幫助嗎?
Enqueue
只是增加了作業隊列。 以后在不同的上下文中甚至在可能不同的計算機上執行作業(hangfire支持多台工作計算機)。 它返回作業ID,以便您稍后查詢(檢查狀態等)。
如果您希望您的作業在這種情況下運行,請直接調用它。
因此,如果請求需要從該作業中返回某些內容,則不需要任何作業。 安排作業並等待其完成沒有任何意義,因此您可以退貨。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.