我正在尝试实现一个基于ASP.NET Core的Web服务,通过ARM模板和Azure SDK for .NET部署Azure资源。然而,根据我的测试结果,某些操作可能需要三到四分钟才能完成。我没有设计过这样长时间执行任务的API。
因此,我考虑采取以下做法:
1. 当API接收到请求来部署资源时,将请求信息放入队列中。 2. 返回200,并为调用者提供票据号以便可以通过调用另一个端点来监视进度。 3. 使用webjob创建资源请求,并更新数据库中的信息。 4. 当调用者调用获取资源部署进度的端点时,我可以提供更新的信息(成功或失败)。
我对这种架构不确定,因为我之前从未做过类似的事情。我正在考虑使用Azure Queues对传入请求进行组织,使用Azure Tables放置有关请求的信息,如部署的详细情况,并使用Azure WebJobs在其制作时执行请求的创建。
这是一个足够好的架构吗?还是应该考虑使用其他技术或模式来完成这个任务?我不确定如何处理这种情况,欢迎您提出任何意见。
因此,我考虑采取以下做法:
1. 当API接收到请求来部署资源时,将请求信息放入队列中。 2. 返回200,并为调用者提供票据号以便可以通过调用另一个端点来监视进度。 3. 使用webjob创建资源请求,并更新数据库中的信息。 4. 当调用者调用获取资源部署进度的端点时,我可以提供更新的信息(成功或失败)。
我对这种架构不确定,因为我之前从未做过类似的事情。我正在考虑使用Azure Queues对传入请求进行组织,使用Azure Tables放置有关请求的信息,如部署的详细情况,并使用Azure WebJobs在其制作时执行请求的创建。
这是一个足够好的架构吗?还是应该考虑使用其他技术或模式来完成这个任务?我不确定如何处理这种情况,欢迎您提出任何意见。
202 Accepted
,以明确地表示“嘿,我有你的东西,稍后会处理它”。不要返回一个票据号码,而是在结果中添加一个Location
头部,并在你大致知道客户端应该“回调”的时间时添加一个Retry-after
头部。客户端在 Location 不再返回 404 时,应该尝试呈现结果或启动处理这些结果的任何逻辑。