Erste Schritte mit Azure-Warteschlangenspeicher und verbundenen Visual Studio-Diensten (Clouddienstprojekte)
Tipp
Testen des Microsoft Azure Storage-Explorers
Beim Microsoft Azure Storage-Explorer handelt es sich um eine kostenlose eigenständige App von Microsoft, über die Sie ganz einfach visuell mit Azure Storage-Daten arbeiten können – unter Windows, MacOS und Linux.
Übersicht
Wichtig
Cloud Services (klassisch) wurde für neue Kunden nun als veraltet gekennzeichnet und wird am 31. August 2024 für alle Kunden ausgemustert. In neuen Bereitstellungen sollte das neue auf Azure Resource Manager basierende Bereitstellungsmodell für Azure Cloud Services (erweiterter Support) verwendet werden.
Dieser Artikel beschreibt, wie die ersten Schritte des Verwendens von Azure-Warteschlangenspeicher in Visual Studio aussehen, nachdem Sie über das Visual Studio-Dialogfeld Verbundene Dienste hinzufügen in einem Clouddienst-Projekt ein Azure-Speicherkonto erstellt oder auf ein solches Konto verwiesen haben.
Wir zeigen Ihnen, wie Sie eine Warteschlange in Code erstellen. Außerdem wird gezeigt, wie Sie grundlegende Warteschlangenvorgänge, etwa Hinzufügen, Ändern, Lesen und Entfernen von Warteschlangennachrichten ausführen. Die Beispiele sind in C# geschrieben und greifen auf die Microsoft Azure-Speicherclientbibliothek für .NETzurück.
Beim Vorgang Verbundene Dienste hinzufügen werden die entsprechenden NuGet-Pakete installiert, um auf Azure-Speicher in Ihrem Projekt zuzugreifen, und Ihren Projektkonfigurationsdateien die Verbindungszeichenfolge für das Speicherkonto hinzugefügt.
- Weitere Informationen zum Bearbeiten von Warteschlangen im Code finden Sie unter Erste Schritte mit Azure Queue Storage mit .NET .
- Allgemeine Informationen zum Azure-Speicher finden Sie unter Speicherdokumentation .
- Allgemeine Informationen zu Azure-Clouddiensten finden Sie unter Cloud Services-Dokumentation .
- Weitere Informationen über das Programmieren von ASP.NET-Anwendungen finden Sie unter ASP.NET .
Die Warteschlangenspeicherung in Azure ist ein Dienst zur Speicherung großer Anzahlen von Nachrichten, auf die von überall auf der Welt mit authentifizierten Anrufen über HTTP oder HTTPS zugegriffen werden kann. Eine einzelne Warteschlangennachricht kann bis zu 64 KB groß sein, und eine Warteschlange kann Millionen von Nachrichten enthalten. Deren Anzahl ist nur durch die Kapazität des Speicherkontos begrenzt.
Zugriff auf Warteschlangen in Code
Um auf Warteschlangen in Projekten der Visual Studio-Clouddienste zuzugreifen, müssen Sie die folgenden Elemente zu jeder C#-Quelldatei hinzufügen, in der auf Azure-Warteschlangenspeicher zugegriffen wird.
Vergewissern Sie sich, dass die Namespacedeklarationen am Anfang der C#-Datei diese using -Anweisungen enthalten.
using Microsoft.Framework.Configuration; using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Queue;
Rufen Sie ein CloudStorageAccount -Objekt ab, das die Informationen zu Ihrem Speicherkonto enthält. Verwenden Sie den folgenden Code, um Ihre Speicherverbindungszeichenfolge und Speicherkontoinformationen aus der Azure-Dienstkonfiguration abzurufen.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse( CloudConfigurationManager.GetSetting("<storage-account-name>_AzureStorageConnectionString"));
Rufen Sie ein CloudQueueClient -Objekt ab, um auf die Warteschlangenobjekte in Ihrem Speicherkonto zu verweisen.
// Create the queue client. CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
Abrufen eines CloudQueue -Objekts, das auf eine bestimmte Warteschlange verweist.
// Get a reference to a queue named "messageQueue" CloudQueue messageQueue = queueClient.GetQueueReference("messageQueue");
HINWEIS: Verwenden Sie den gesamten obigen Code vor dem Code in den folgenden Beispielen.
Erstellen einer Warteschlange in Code
Fügen Sie zum Erstellen einer Warteschlange in Code einfach einen Aufruf von CreateIfNotExistshinzu.
// Create the CloudQueue if it does not exist
messageQueue.CreateIfNotExists();
Hinzufügen von Nachrichten zu einer Warteschlange
Wenn Sie eine Nachricht in eine vorhandene Warteschlange einfügen möchten, erstellen Sie zuerst ein neues CloudQueueMessage-Objekt, und rufen Sie dann die AddMessage-Methode auf.
Ein CloudQueueMessage -Objekt kann aus einer Zeichenfolge (im UTF-8-Format) oder aus einem Bytearray erstellt werden.
Hier ist ein Beispiel, dass die Nachricht "Hello, World" eingefügt.
// Create a message and add it to the queue.
CloudQueueMessage message = new CloudQueueMessage("Hello, World");
messageQueue.AddMessage(message);
Lesen von Nachrichten in einer Warteschlange
Sie können einen Blick auf die Nachricht am Anfang einer Warteschlange werfen, ohne sie aus der Warteschlange zu entfernen, indem Sie die Methode PeekMessage aufrufen.
// Peek at the next message
CloudQueueMessage peekedMessage = messageQueue.PeekMessage();
Lesen und Entfernen von Nachrichten in einer Warteschlange
Ihr Code kann eine Nachricht in zwei Schritten aus der Warteschlange entfernen.
- Rufen Sie GetMessage auf, um die nächste Nachricht in einer Warteschlange abzurufen. Die für GetMessage zurückgegebene Nachricht ist für andere Codes nicht mehr sichtbar, die Nachrichten aus dieser Warteschlange lesen. Standardmäßig bleibt die Nachricht 30 Sekunden lang unsichtbar.
- Wenn Sie die Nachricht endgültig aus der Warteschlange entfernen möchten, rufen Sie DeleteMessageauf.
Dieser zweistufige Prozess zum Entfernen von Nachrichten stellt sicher, dass eine andere Codeinstanz dieselbe Nachricht erneut abrufen kann, falls die Verarbeitung aufgrund eines Hardware- oder Softwarefehlers fehlschlägt. Der folgende Code ruft DeleteMessage direkt nach der Verarbeitung der Nachricht auf.
// Get the next message in the queue.
CloudQueueMessage retrievedMessage = messageQueue.GetMessage();
// Process the message in less than 30 seconds
// Then delete the message.
await messageQueue.DeleteMessage(retrievedMessage);
Verwenden zusätzlicher Optionen zum Verarbeiten und Entfernen von Nachrichten in Warteschlangen
Es gibt zwei Möglichkeiten, wie Sie das Abrufen von Nachrichten aus der Warteschlange anpassen können.
- Sie können einen Nachrichtenstapel abrufen (bis zu 32).
- Außerdem können Sie das Unsichtbarkeits-Zeitlimit verkürzen oder verlängern, sodass der Code mehr oder weniger Zeit zur vollständigen Verarbeitung jeder Nachricht benötigt. Im folgenden Codebeispiel wird GetMessages verwendet, um 20 Nachrichten mit einem Aufruf abzurufen. Anschließend wird jede Nachricht mithilfe einer foreach -Schleife verarbeitet. Außerdem wird das Unsichtbarkeits-Zeitlimit auf fünf Minuten pro Nachricht festgelegt. Beachten Sie, dass die 5 Minuten für alle Nachrichten gleichzeitig beginnen, sodass 5 Minuten nach dem Aufruf von GetMessagesalle Nachrichten, die nicht gelöscht wurden, wieder sichtbar werden.
Hier sehen Sie ein Beispiel:
foreach (CloudQueueMessage message in messageQueue.GetMessages(20, TimeSpan.FromMinutes(5)))
{
// Process all messages in less than 5 minutes, deleting each message after processing.
// Then delete the message after processing
messageQueue.DeleteMessage(message);
}
Abrufen der Warteschlangenlänge
Sie können die Anzahl der Nachrichten in einer Warteschlange schätzen lassen. Die Methode FetchAttributes fordert den Warteschlangendienst auf, die Warteschlangenattribute einschließlich der Nachrichtenanzahl abzurufen. Die ApproximateMethodCount-Eigenschaft gibt den letzten von der FetchAttributes-Methode abgerufenen Wert zurück, ohne den Warteschlangendienst aufzurufen.
// Fetch the queue attributes.
messageQueue.FetchAttributes();
// Retrieve the cached approximate message count.
int? cachedMessageCount = messageQueue.ApproximateMessageCount;
// Display number of messages.
Console.WriteLine("Number of messages in queue: " + cachedMessageCount);
Verwenden des Async-Await-Musters mit allgemeinen Azure-Warteschlangen-APIs
In diesem Beispiel wird veranschaulicht, wie das Async-Await-Muster mit allgemeinen Azure-Warteschlangen-APIs verwendet wird. Im Beispiel werden jeweils die asynchronen Versionen der angegebenen Methoden aufgerufen, was am Postfix Async der einzelnen Methoden erkennbar ist. Wenn eine asynchrone Methode verwendet wird, hält das Async-Await-Muster die lokale Ausführung an, bis der Aufruf abgeschlossen ist. Durch dieses Verhalten kann der aktuelle Thread eine andere Aktion ausführen, wodurch Leistungsengpässe vermieden werden und die allgemeine Reaktionsfähigkeit der Anwendung verbessert wird. Weitere Informationen zur Verwendung des Async-Await-Musters in .NET finden Sie unter Async und Await (C# und Visual Basic)
// Create a message to put in the queue
CloudQueueMessage cloudQueueMessage = new CloudQueueMessage("My message");
// Add the message asynchronously
await messageQueue.AddMessageAsync(cloudQueueMessage);
Console.WriteLine("Message added");
// Async dequeue the message
CloudQueueMessage retrievedMessage = await messageQueue.GetMessageAsync();
Console.WriteLine("Retrieved message with content '{0}'", retrievedMessage.AsString);
// Delete the message asynchronously
await messageQueue.DeleteMessageAsync(retrievedMessage);
Console.WriteLine("Deleted message");
Löschen einer Warteschlange
Zum Löschen einer Warteschlange und aller darin enthaltenen Nachrichten rufen Sie die Methode Delete für das Warteschlangenobjekt auf.
// Delete the queue.
messageQueue.Delete();
Nächste Schritte
Nachdem Sie sich nun mit den Grundlagen des Azure-Warteschlangenspeichers vertraut gemacht haben, folgen Sie diesen Links, um zu erfahren, wie komplexere Speicheraufgaben ausgeführt werden.
- Vollständige Informationen zu verfügbaren APIs finden Sie in der Warteschlangendienst-Referenzdokumentation in der Referenz zur Azure Storage-Clientbibliothek für .NET .
- weitere Informationen über die Verwendung von Queue Storage finden Sie unter Erste Schritte mit Azure Queue Storage mithilfe von .NET
- Unter Was ist das Azure WebJobs SDK
- Weitere Informationen zu zusätzlichen Optionen für das Speichern von Daten in Azure finden Sie in den anderen Featureleitfäden.
- Informationen zum Arbeiten mit Azure Storage-Tabellen finden Sie unter Erste Schritte mit Azure Table Storage mithilfe von .NET.
- Informationen zum Arbeiten mit Azure Storage-Blobs finden Sie unter Erste Schritte mit Azure Blob Storage mithilfe von .NET.
- Informationen zum Speichern relationaler Daten finden Sie unter Herstellen von Verbindungen mit SQL-Datenbanken mithilfe von .NET (C#).