1

Azureサービスバスキューを使用するコマンド処理アプリケーションに取り組んでいます。コマンドはWebサイトから発行されてキューに送信され、キューメッセージはワーカーロールによって処理されます。処理には、キューメッセージ値に基づいてdbおよびその他のソースからデータをフェッチし、それをさまざまなトピックに送信することが含まれます。流れは、

  1. メッセージを受信する
  2. メッセージを処理する
  3. メッセージを完了としてマーク/例外の処理時にメッセージを破棄します。

ここで私が直面する課題は、処理時間です。最大メッセージロック時間(5分構成)を超える場合があります。そのため、メッセージのロックが解除され、ワー​​カーロールが取得できるように再表示されます(ワーカーロールの複数のインスタンスを考慮してください)。したがって、これにより同じメッセージが再度処理されます。

そのようなシナリオを処理するために必要なオプションは何ですか。

私は考えました、

  1. メッセージの受信-ローカル変数への追加-メッセージの完了をマークします。例外が発生した場合は、メッセージをキューまたは別のキューに再度送信します(失敗したメッセージキューとしましょう)。2番目のキューは、それを処理するための別のワーカーロールも意味します。

  2. 処理では、実行されるforeachループがあります。そこで、代わりにParallel.Foreachを使用することを考えました。ただし、どのくらいの時間が得られるかはわかりません。また、AzureでParallelを使用する場合の問題に関する投稿も読んでください。

提案、修正を歓迎します。

4

3 に答える 3

1

Aravind、このシナリオでは絶対に SB キューを使用できます。最新の SDK を使用すると、メッセージの処理を継続している限り、メッセージのロックを更新できます。詳細はhttp://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.renewlock.aspxにあります。

これは、可視性タイムアウトを更新する Azure ストレージ キュー機能に似ています: http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.windowsazure.storage.queue.cloudqueue.updatemessage.aspx

于 2013-01-03T18:46:20.783 に答える
0

Azure Queueの使用を検討することをお勧めします。Azure Service Bus Queue のリース時間は 5 分であるのに対し、Azure Queue メッセージの最大リース時間は 7 日です。

この msdn 記事では、2 つの Azure キュー タイプの違いについて説明します。

標準の Azure キューに必要なすべての機能が含まれていない場合は、両方の種類のキューを使用することを検討してください。

于 2013-01-03T04:13:08.357 に答える