GetMessage と GetMessages を使用してメッセージを 1 つずつ取得する場合のオーバーヘッドはどのようなものでしょうか? 常に GetMessages(32) を使用する必要がありますか? GetMessage() よりも利点がありますか?
2 に答える
キューに32個のメッセージがあり、キュー内のすべてのメッセージを取得することが目的であるとすると、GetMessage()を呼び出す場合は、すべてのメッセージを取得するために32回の呼び出しを行う必要があります。したがって、GetMessages(32)を呼び出す場合と同様に32個のAPIトランザクションが必要になります。 1回の呼び出しですべてのメッセージを取得するため、1回のトランザクションで済みます。
それ以上に、アプリケーションにもよると思います。たとえば、アプリケーションのワーカーロール(「コンシューマー」と呼びましょう)インスタンスが一度に4つのメッセージを処理できると判断したこの機能で遊んでいます。その場合、私にとっては、GetMessages(4)を使用してキューから4つのメッセージをフェッチし、コンシューマーインスタンスによって処理された4つのメッセージが他の呼び出し元に表示されないようにすることをお勧めします。GetMessage()を使用した場合、この呼び出しを4回行う必要があり、GetMessages(32)を使用した場合、コンシューマーインスタンスはそれらの追加の28メッセージ上に配置され、他のコンシューマーインスタンスは取得しません。それらのメッセージに取り組むチャンス。
私見ですが、GetMessagesを呼び出すことは、アプリケーションに基づいて意味があります。設計上、メッセージをバッチで処理する方が効率的である場合は、メッセージをバッチで取得する必要があります(小さなメッセージ、メッセージの1つを処理するためのオーバーヘッドが少ない)が、代わりに1つのメッセージを処理するのに1〜5分かかる場合は、より適切です。 GetMessageを実行しますが、複数のワーカーロールが作業を実行します。
だから、それは依存します