Azureサービスバスキューを使用するコマンド処理アプリケーションに取り組んでいます。コマンドはWebサイトから発行されてキューに送信され、キューメッセージはワーカーロールによって処理されます。処理には、キューメッセージ値に基づいてdbおよびその他のソースからデータをフェッチし、それをさまざまなトピックに送信することが含まれます。流れは、
- メッセージを受信する
- メッセージを処理する
- メッセージを完了としてマーク/例外の処理時にメッセージを破棄します。
ここで私が直面する課題は、処理時間です。最大メッセージロック時間(5分構成)を超える場合があります。そのため、メッセージのロックが解除され、ワーカーロールが取得できるように再表示されます(ワーカーロールの複数のインスタンスを考慮してください)。したがって、これにより同じメッセージが再度処理されます。
そのようなシナリオを処理するために必要なオプションは何ですか。
私は考えました、
メッセージの受信-ローカル変数への追加-メッセージの完了をマークします。例外が発生した場合は、メッセージをキューまたは別のキューに再度送信します(失敗したメッセージキューとしましょう)。2番目のキューは、それを処理するための別のワーカーロールも意味します。
処理では、実行されるforeachループがあります。そこで、代わりにParallel.Foreachを使用することを考えました。ただし、どのくらいの時間が得られるかはわかりません。また、AzureでParallelを使用する場合の問題に関する投稿も読んでください。
提案、修正を歓迎します。