我创建了一个WebAPI方法,该方法将数据从发布到方法的内容插入到数据库中。
我的问题是如何推迟处理,以便请求者不会因为响应而闲逛?
例如:
[HttpPost]
[Route("MyTest/ImportData")]
public HttpResponseMessage AddData([FromBody] XElement xmlBody)
{
try
{
// Verify that I can read the XML..
// Push XML off to another process to insert into database.
UpdateDataBase(xmlBody);
// Notify requester that I accepted the file.
return Request.CreateResponse(HttpStatusCode.OK);
}
catch (Exception ex)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError);
}
}
我的作品。但是,插入所有数据可能需要4分钟。我想验证我是否可以读取xml,以某种方式关闭进程并给用户一个OK响应。
答案 0 :(得分:2)
将工作委托给其他流程。
它可能是您想要的任何东西,服务,命令行应用程序,任何适当的。
我会设置一个消息传递系统,让webapi将所有这些工作动作发送到队列,然后有一个Windows服务,例如处理这个队列。这将释放api的压力,让它处理其他请求,而无需等待长时间运行的任务完成。它不一定要比这更复杂。
作为一个建议,RabbitMQ是相当直接的,但我建议你环顾四周,挑选你喜欢的任何东西