Web-Api:收到请求时 - 给出响应,然后继续执行与请求相关的工作
Web-Api: When getting a request - give a response but then continue do a job related to the request
我们有一个基于 web-api 的服务器,用户发出请求。
许多请求的后果超出了我们需要给用户的答案。
所以我们想给出 him/her 答案,然后继续处理含义。
有时我们需要 "next actions" 快速发生。有时我们可以等一下。
我想到了以下选项:
在给出响应之前-为作业打开另一个线程
但在我看来很贵,甚至可能行不通。
在给出响应之前-将作业放在某个监听的队列中
但在我看来,它可能会将执行推迟很多
我说的对吗?我错了吗?
guidelines/best这类问题的做法是什么
我认为在这种情况下进行后台处理的最佳方法是使用一些队列,例如azure webjobs 或者更复杂的东西,比如 NServiceBus。您只需发送 message/order 处理和 return 响应,通知用户此订单已被接受。此类操作甚至有特殊的 HTTP 代码 (202)。
打开另一个线程不太好,因为你对此失去了控制。没有简单的方法来监控它。如果该线程崩溃或应用程序池回收怎么办?您丢失了所有数据,用户将永远等待。就是不靠谱
我们有一个基于 web-api 的服务器,用户发出请求。
许多请求的后果超出了我们需要给用户的答案。
所以我们想给出 him/her 答案,然后继续处理含义。
有时我们需要 "next actions" 快速发生。有时我们可以等一下。
我想到了以下选项:
在给出响应之前-为作业打开另一个线程
但在我看来很贵,甚至可能行不通。在给出响应之前-将作业放在某个监听的队列中
但在我看来,它可能会将执行推迟很多
我说的对吗?我错了吗?
guidelines/best这类问题的做法是什么
我认为在这种情况下进行后台处理的最佳方法是使用一些队列,例如azure webjobs 或者更复杂的东西,比如 NServiceBus。您只需发送 message/order 处理和 return 响应,通知用户此订单已被接受。此类操作甚至有特殊的 HTTP 代码 (202)。
打开另一个线程不太好,因为你对此失去了控制。没有简单的方法来监控它。如果该线程崩溃或应用程序池回收怎么办?您丢失了所有数据,用户将永远等待。就是不靠谱