2016-05-03 13 views
3

私はASP.NET Web APIからアイテムをAzure Storage Queueに送信しています。ユーザーにキュー内のアイテムの位置に関するフィードバックを提供したいと思います彼らが戻ったり来たりすると、アイテムの位置を更新することができます。Azureストレージキューのサイズ/位置を取得する方法

ないことがここで問題と大いに関係しているが、これは

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigHelper.GetAzureStorage()); 
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); 

CloudQueue queue = queueClient.GetQueueReference("my-queue"); 
await queue.CreateIfNotExistsAsync(); 

var messageJson = JsonConvert.SerializeObject(item); 
CloudQueueMessage cloudQueueMessage = new CloudQueueMessage(messageJson); 

await queue.AddMessageAsync(cloudQueueMessage); 

は、だから私は周りCloudQueueClientCloudQueueを突いてきたキュー内のアイテムを配置するために用いた方法イムですが、すべて私が見つけることができることCloudQueue.ApproximateMessageCountは常にnullを返しました。

私はちょっと試してみましたが、これはいつも始まって​​います。スタートガイドでは、キューのアイテムの位置を取得する方法について具体的に指摘しています。

答えて

4

キュー内のアイテムの位置を取得することはできません。

メッセージ数を概算するには、値を取得する前にFetchAttributesまたはFetchAttributesAsyncに電話する必要があります。これにより、ApproximateMessageCountにキューからの実際の値が入力されます。

+0

私はちょっと待ち構えていますが、キュー内のすべての項目が処理に同じ時間を費やし、実際にApproximateMessageCountがどのように動作しているかを実際に知っているので、時間を見積もってユーザーに返します。Thanks heaps – Toxicable

+0

@毒性:主に分散キューが動作するためです。メッセージの順序は保証されていません。それは先入れ先出しに近いでしょうが、100%ではないかもしれないので、少しぼやけているのでその位置を示す数字を与えることはできません – porges

+0

ああ、わかりました。私はそれが分散キューであることを知らなかった、それをクリアするためのおかげで、ありがとうのおかげで – Toxicable

関連する問題