Task Parallel Library と Azure インスタンスに関連する問題を解決するための助けが必要です。以下は、私の Worker Role のコードです。
複数のファイルをアップロードするたびに、リクエストがキューに挿入され、ワーカー プロセスが継続的にクエリを処理してメッセージを取得します。メッセージが取得されたら、長時間実行されるプロセスを実行します。複数のリクエストが複数のインスタンスの複数のタスクインスタンスによって処理されるように、タスクスケジューラを使用しました。
ここで、あるインスタンスがキューからメッセージを取得し、そのメッセージをタスクに割り当てて処理すると、別のインスタンスもキューから同じメッセージを取得して処理することがわかります。そのため、私のタスクは複数回実行されます。
この問題で私を助けてください。私の要件は、1 つの Ccre の 1 つの Azure インスタンスのみが、タスクごとに複数ではなく、1 つのタスク操作を処理することです。
public override void Run()
{
//Step1 : Get the message from Queue
//Step 2:
Task<string>.Factory.StartNew(() =>
{
//Message delete from Queue
PopulateBlobtoTable(uri, localStoragePath);
}
catch (Exception ex)
{
Trace.WriteLine(ex.Message);
throw;
}
finally
{
}
}
return "Finished!";
})
catch (AggregateException ae)
{
foreach (var exception in ae.InnerExceptions)
{
Trace.WriteLine(exception.Message);
}
}