Aan de slag met aan Azure Queue Storage en Visual Studio verbonden services (cloudserviceprojecten)
Tip
Microsoft Azure Storage Explorer proberen
Microsoft Azure Storage Explorer is een gratis, zelfstandige app van Microsoft waarmee u visueel met Azure Storage-gegevens kunt werken in Windows, macOS en Linux.
Overzicht
Belangrijk
Cloud Services (klassiek) is nu afgeschaft voor nieuwe klanten en wordt op 31 augustus 2024 buiten gebruik gesteld voor alle klanten. Nieuwe implementaties moeten gebruikmaken van het nieuwe Azure Resource Manager-implementatiemodel azure Cloud Services (uitgebreide ondersteuning).
In dit artikel wordt beschreven hoe u aan de slag gaat met Azure Queue Storage in Visual Studio nadat u een Azure-opslagaccount hebt gemaakt of waarnaar wordt verwezen in een cloudservicesproject met behulp van het dialoogvenster Verbonden services toevoegen in Visual Studio.
We laten zien hoe u een wachtrij maakt in code. We laten u ook zien hoe u eenvoudige wachtrijbewerkingen uitvoert, zoals het toevoegen, wijzigen, lezen en verwijderen van wachtrijberichten. De voorbeelden worden geschreven in C#-code en gebruiken de Microsoft Azure Storage-clientbibliotheek voor .NET.
Met de bewerking Connected Services toevoegen worden de juiste NuGet-pakketten geïnstalleerd voor toegang tot Azure Storage in uw project en worden de connection string voor het opslagaccount toegevoegd aan uw projectconfiguratiebestanden.
- Zie Aan de slag met Azure Queue Storage met behulp van .NET voor meer informatie over het bewerken van wachtrijen in code.
- Raadpleeg de documentatie voor Storage voor algemene informatie over Azure Storage.
- Zie Cloud Services documentatie voor algemene informatie over Azure-cloudservices.
- Zie ASP.NET voor meer informatie over het programmeren van ASP.NET toepassingen.
Azure Queue Storage is een service voor de opslag van grote aantallen berichten die via HTTP of HTTPS overal vandaan kunnen worden opgevraagd met geverifieerde aanroepen. Een enkel wachtrijbericht mag maximaal 64 KB groot zijn en een wachtrij kan miljoenen berichten bevatten, tot de totale capaciteitslimiet van een opslagaccount.
Toegang tot wachtrijen in code
Voor toegang tot wachtrijen in Visual Studio Cloud Services-projecten moet u de volgende items opnemen in een C#-bronbestand dat toegang heeft tot Azure Queue Storage.
Zorg ervoor dat de naamruimtedeclaraties boven aan het C#-bestand deze met behulp van instructies bevatten.
using Microsoft.Framework.Configuration; using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Queue;
Haal een CloudStorageAccount-object op dat uw opslagaccountgegevens vertegenwoordigt. Gebruik de volgende code om de gegevens van uw opslag-connection string en opslagaccount op te halen uit de Configuratie van de Azure-service.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse( CloudConfigurationManager.GetSetting("<storage-account-name>_AzureStorageConnectionString"));
Haal een CloudQueueClient-object op om te verwijzen naar de wachtrijobjecten in uw opslagaccount.
// Create the queue client. CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
Haal een CloudQueue-object op om te verwijzen naar een specifieke wachtrij.
// Get a reference to a queue named "messageQueue" CloudQueue messageQueue = queueClient.GetQueueReference("messageQueue");
OPMERKING: Gebruik alle bovenstaande code vóór de code in de volgende voorbeelden.
Een wachtrij maken in code
Als u de wachtrij in code wilt maken, voegt u een aanroep toe aan CreateIfNotExists.
// Create the CloudQueue if it does not exist
messageQueue.CreateIfNotExists();
Een bericht toevoegen aan een wachtrij
Als u een bericht wilt invoegen in een bestaande wachtrij, maakt u een nieuw CloudQueueMessage-object en roept u de Methode AddMessage aan.
Een CloudQueueMessage-object kan worden gemaakt op basis van een tekenreeks (in UTF-8-indeling) of een bytematrix.
Hier volgt een voorbeeld waarin het bericht 'Hallo wereld' wordt ingevoegd.
// Create a message and add it to the queue.
CloudQueueMessage message = new CloudQueueMessage("Hello, World");
messageQueue.AddMessage(message);
Een bericht in een wachtrij lezen
U kunt het bericht vooraan in een wachtrij bekijken zonder het uit de wachtrij te verwijderen, door de methode PeekMessage aan te roepen.
// Peek at the next message
CloudQueueMessage peekedMessage = messageQueue.PeekMessage();
Een bericht in een wachtrij lezen en verwijderen
Uw code kan in twee stappen een bericht uit een wachtrij verwijderen (de wachtrij ongedaan maken).
- Roep GetMessage aan om het volgende bericht in een wachtrij te krijgen. Een bericht dat wordt geretourneerd door GetMessage, wordt onzichtbaar voor andere codes die berichten lezen uit deze wachtrij. Standaard blijft het bericht onzichtbaar gedurende 30 seconden.
- Als u het bericht uit de wachtrij wilt verwijderen, roept u DeleteMessage aan.
Dit proces in twee stappen voor het verwijderen van een bericht zorgt ervoor dat als de code er niet in slaagt een bericht te verwerken vanwege hardware- of softwareproblemen, een ander exemplaar van uw code hetzelfde bericht kan ophalen en het opnieuw kan proberen. Met de volgende code wordt DeleteMessage aangeroepen nadat het bericht is verwerkt.
// 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);
Extra opties gebruiken om wachtrijberichten te verwerken en te verwijderen
Er zijn twee manieren waarop u het ophalen van berichten uit een wachtrij kunt aanpassen.
- U kunt een batch berichten ophalen (maximaal 32).
- U kunt een langere of kortere time-out voor onzichtbaarheid instellen, zodat uw code meer of minder tijd heeft om elk bericht volledig te verwerken. In het volgende codevoorbeeld wordt de methode GetMessages gebruikt om 20 berichten in één aanroep op te halen. Vervolgens wordt elk bericht verwerkt met behulp van een foreach-lus. De time-out voor onzichtbaarheid wordt ingesteld op vijf minuten voor elk bericht. Houd voor ogen dat de periode van 5 minuten voor alle berichten op hetzelfde moment start. Nadat er 5 minuten zijn verstreken sinds de aanroep van GetMessages, worden dus alle berichten die niet zijn verwijderd, opnieuw zichtbaar.
Hier volgt een voorbeeld:
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);
}
Lengte van de wachtrij ophalen
U kunt een schatting ophalen van het aantal berichten in de wachtrij. De methode FetchAttributes vraagt de Queue-service de wachtrij-kenmerken, zoals het aantal berichten, op te halen. De eigenschap ApproximateMethodCount retourneert de laatste waarde die is opgehaald door de methode FetchAttributes , zonder de Queue-service aan te roepen.
// 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);
Het Async-Await-patroon gebruiken met algemene Azure Queue-API's
In dit voorbeeld ziet u hoe u het Async-Await patroon gebruikt met algemene Azure Queue-API's. In het voorbeeld wordt de asynchrone versie van elk van de opgegeven methoden aangeroepen. Dit kan worden gezien door de Async-na-fix van elke methode. Wanneer een asynchrone methode wordt gebruikt, wordt het asynchrone-wachtpatroon de lokale uitvoering opgeschort totdat de aanroep is voltooid. Met dit gedrag kan de huidige thread ander werk uitvoeren, waardoor prestatieknelpunten worden voorkomen en de algehele reactiesnelheid van uw toepassing wordt verbeterd. Zie Async en Await (C# en Visual Basic) voor meer informatie over het gebruik van het Async-Await-patroon in .NET.
// 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");
Een wachtrij verwijderen
Als u een wachtrij en alle berichten hierin wilt verwijderen, roept u de methode Delete aan in het wachtrijobject.
// Delete the queue.
messageQueue.Delete();
Volgende stappen
Nu u de basisbeginselen van Azure Queue Storage hebt geleerd, volgt u deze koppelingen voor meer informatie over complexere opslagtaken.
- Bekijk de referentiedocumentatie voor de Queue-service in de Azure Storage-clientbibliotheek voor .NET voor volledige informatie over beschikbare API's.
- Meer informatie over het gebruik van Queue Storage bij Aan de slag met Azure Queue Storage met behulp van .NET
- Voor meer informatie over het vereenvoudigen van de code die u schrijft om te werken met Azure Storage, raadpleegt u Wat is de Azure WebJobs SDK?
- Bekijk meer functiehandleidingen voor informatie over aanvullende mogelijkheden voor het opslaan van gegevens in Azure.
- Zie Aan de slag met Azure Table Storage met behulp van .NET om te werken met Azure Storage-tabellen.
- Als u wilt werken met Azure Storage-blobs, gaat u aan de slag met Azure Blob Storage met behulp van .NET.
- Zie Verbinding maken met SQL Database met behulp van .NET (C#) om relationele gegevens op te slaan.