0

Azure ストレージから BLOB を削除する必要があるワーカー ロールを Azure に実装しています。ブロブのリストに約 10,000 のアイテムがあると仮定しましょう。

最も単純な同期アプローチは、おそらく次のようになります。

Parallel.ForEach(list, x => ((CloudBlob) x).Delete());

要件:

  • 同じことを非同期に (単一のスレッドで) 実装したいと考えています。

  • 同時接続数を 50 に制限したいので、同時に 50 の非同期接続しか実行されないときに 10K の削除を行います。1 つの削除が完了すると、新しい削除を開始できます。

解決?

これまでのところ、 this questionthis oneを読んだ後、TPL Dataflowが進むべき道のようです。

これは非常に単純な問題であり、データフローはやり過ぎのように思えます。より簡単な代替手段はありますか?

そうでない場合、これはデータフローを使用してどのように実装されますか? 私が理解しているように、async削除を実行する単一のアクション ブロックが必要です (必要awaitですか?)。ブロックを作成するときはMaxDegreeOfParallelism、50 に設定する必要があります。次に、リストから 10K のブロブをブロックにポストし、block.Completion.Wait(). これは正しいです?

4

2 に答える 2