かなりの数のレポートを生成する必要があり、レポートの生成には約 5 分かかり、大量のデータと多くの異なるソースがあります。
クライアントはメッセージを Azure ストレージ キューに投稿します。メッセージを処理してレポートを生成する worker ロールがあります。
これをスケールアップしたい場合は、キューからのメッセージを処理してレポートを生成する 10 個のワーカー ロールになるとします。次に、次のようにメッセージをキューに追加します。
- メッセージ 1: 1 から 5 までのレポートを処理します
- メッセージ 2: 6 ~ 11 のレポートを処理します .........
- メッセージ 10: 50 から 55 までのプロセス レポート (範囲が正確ではない可能性があります)
ワーカー ロール 1 が最初のメッセージを受け取り、そのメッセージにロックをかけるが、プロセスに 5 分かかる場合、ロックが期限切れになり、メッセージが再びキューに表示されるため、ワーカー ロール 2 がメッセージを受け取って処理を開始します。 ...など
タスクが長いタスクであることを念頭に置いて、キュー メッセージの消費が 1 回だけ行われることを回避するにはどうすればよいですか?