2016-05-03 5 views
3

So senden Sie ein Element von meiner ASP.NET-Web-API an eine Azure-Speicherwarteschlange, und ich möchte dem Benutzer ein Feedback zur Position seines Elements in der Warteschlange geben sowie in der Lage, sie auf die Position ihres Artikels zu aktualisieren, wenn sie zurückkommen oder etwas Ähnliches.So erhalten Sie die Azure Storage Queue-Größe/Position

Nicht, dass es viel hat hier mit der Frage zu tun, aber das ist die Methode im mit dem Element in der Warteschlange zu platzieren

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); 

Also ich um CloudQueueClient und CloudQueue gestoßen habe, aber alles konnte ich finden war CloudQueue.ApproximateMessageCount, die immer null zurückgab.

Ich habe auch ein bisschen gegoogelt, wie das immer kommt mit Erste-Schritte-Guides, insbesondere darauf, wie ich gehen würde, um die Größe dann Position des Artikels in einer Warteschlange, so ist es überhaupt möglich?

Antwort

4

Es ist nicht möglich, die Position des Elements in der Warteschlange zu ermitteln.

Für die ungefähre Anzahl der Nachrichten müssen Sie vor dem Abrufen des Werts FetchAttributes oder FetchAttributesAsync aufrufen. Dies wird ApproximateMessageCount mit dem tatsächlichen Wert aus der Warteschlange auffüllen.

+0

Nun, das ist irgendwie saugt, aber zumindest da jedes Element in der Warteschlange die gleiche Zeit dauert zu verarbeiten und tatsächlich zu wissen, wie 'ApproximateMessageCount' funktioniert, kann ich einfach die Zeit abschätzen und das dem Benutzer zurückgeben, Vielen Dank – Toxicable

+0

@Toxicable: es ist vor allem wegen der Art und Weise, wie verteilte Warteschlangen funktionieren - es gibt keine Garantie auf die Reihenfolge der Nachrichten. Es wird nah an first-in-first-out sein, aber möglicherweise nicht 100%, also kann man keine Zahl angeben, die die Position anzeigt, da es ein wenig unscharf ist. – porges

+0

Ohh ich sehe, das macht Sinn. Ich wusste nicht, dass es eine verteilte Warteschlange war, die Sinn macht als, danke für das Löschen – Toxicable

Verwandte Themen