![](/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.