我想创建一个托管在 Windows Azure 中的 Web 服务。客户端将上传文件进行处理,云将处理这些文件,生成结果文件,客户端将下载它们。
我想我将使用 Web 角色来处理 HTTP 请求,并使用工作角色来进行实际处理,并使用 Azure 队列或 Azure 表存储之类的东西来跟踪请求。让我们假设它是 Azure 表存储——每个用户上传的文件都有一个“请求”记录。
一个主要的设计问题是处理单个文件可能需要一秒钟到十个小时不等。
所以我期待以下情况:启动一个工作角色,进入 Azure 表存储,找到一个标记为“准备处理”的请求,将其标记为“正在处理”,开始实际处理。通常它会处理文件并将请求标记为“已处理”,但如果它意外死亡怎么办?
除非我照顾它,否则请求将永远保持“正在处理”状态。
如何跟踪标记为“正在处理”但已放弃的请求?Windows Azure 中的哪种机制对此最方便?