5

Azure Service Bus を使用して、webrole と workerrole でメッセージを管理しています。

ループを使用せずにキューから複数のメッセージを一度に取得する方法を知る必要があります。

4

3 に答える 3

5

Service Bus キューには、一度に複数のメッセージを取得する方法はありませんが、メッセージがキャッシュされるプリフェッチを設定できます (その結果、パフォーマンスが向上します)。プリフェッチの詳細については、こちらをご覧ください。

本当にメッセージの一括読み取りが必要な場合は、@AvkashChauhan の指摘を考慮してください。Windows Azure ストレージ キューは、1 回のトランザクションで最大 32 個のメッセージを一度に読み取ることができます。各キュー メッセージを個別に削除する必要があります。一括削除はありません。

于 2012-06-07T23:37:48.443 に答える
4

Microsoft.ServiceBus.Messaging の ReceiveBatch メソッドを使用できます。

private MessageReceiver messageReceiver;
var brokeredMessagesList = messageReceiver.ReceiveBatch(100);

受信したバッチの処理が完了するまでキューをロックできます。処理が完了したら、CompleteBatch を呼び出してキューのロックを解放できます。

                List<Guid> messageLockTokenList = new List<System.Guid>();
                foreach(BrokeredMessage message in brokeredMessagesList)
                {
                    messageLockTokenList.Add(message.LockToken);
                }
                messageReceiver.CompleteBatch(messageLockTokenList)
于 2014-06-30T02:41:38.007 に答える
3

キューからメッセージを取得するときは、複数のメッセージを 1 つのストレージ トランザクションにまとめてバッチ処理します。キュー サービス API の GetMessages メソッドを使用すると、指定した数のメッセージを 1 回のトランザクションでキューから取り出すことができます。

GetMessages メソッドを介してメッセージを取得する場合、キュー サービス API が 1 回のデキュー操作でサポートする最大バッチ サイズは 32 に制限されています。この制限を超えると、実行時例外が発生します。

詳細については、http ://windowsazurecat.com/2010/12/best-practices-for-maximizing-scalability-and-cost-effectiveness-of-queue-based-messaging-solutions-on-windows-azure/ を参照してください。

于 2012-06-07T23:10:23.533 に答える