Windows Azure でホストされる Web サービスを作成したいと考えています。クライアントは処理のためにファイルをアップロードし、クラウドはそれらのファイルを処理して結果のファイルを生成し、クライアントはそれらをダウンロードします。
HTTP リクエストの処理には Web ロールを使用し、実際の処理にはワーカー ロールを使用し、リクエストの追跡には Azure Queue や Azure Table Storage などを使用すると思います。ユーザーがアップロードしたファイルごとに 1 つの "要求" レコード - Azure テーブル ストレージであると仮定しましょう。
設計上の大きな問題は、1 つのファイルを処理するのに 1 秒から 10 時間かかることです。
ワーカー ロールが開始され、Azure テーブル ストレージにアクセスし、"処理準備完了" とマークされた要求を見つけ、"処理中" とマークされ、実際の処理を開始します。通常はファイルを処理し、リクエストを「処理済み」とマークしますが、予期せず停止した場合はどうなるでしょうか?
私がそれを処理しない限り、リクエストは永遠に「処理中」の状態のままになります。
「処理中」とマークされているが放棄されたリクエストを追跡するにはどうすればよいですか? Windows Azure のどのメカニズムが最も便利でしょうか?