Prise en main du stockage de files d’attente Azure à l’aide de .NETGet started with Azure Queue storage using .NET

Conseil

Consultez le référentiel d’exemples de code de Stockage AzureCheck out the Azure Storage code samples repository

Pour des exemples de code Stockage Azure de bout en bout faciles à utiliser que vous pouvez télécharger et exécuter, consultez notre liste Exemples Stockage Azure.For easy-to-use end-to-end Azure Storage code samples that you can download and run, please check out our list of Azure Storage Samples.

PrésentationOverview

Le stockage de files d’attente Azure fournit une messagerie cloud entre les composants d’application.Azure Queue storage provides cloud messaging between application components. Lors de la conception d'applications pour la mise à l'échelle, des composants d'application sont souvent découplés, de sorte qu'ils peuvent être mis à l'échelle indépendamment.In designing applications for scale, application components are often decoupled, so that they can scale independently. Le stockage de files d’attente offre une messagerie asynchrone pour la communication entre les composants d’application, qu’ils soient exécutés dans le cloud, sur le bureau, sur un serveur local ou sur un appareil mobile.Queue storage delivers asynchronous messaging for communication between application components, whether they are running in the cloud, on the desktop, on an on-premises server, or on a mobile device. Le stockage de files d’attente prend également en charge la gestion des tâches asynchrones et la création des flux de travail de processus.Queue storage also supports managing asynchronous tasks and building process work flows.

À propos de ce didacticielAbout this tutorial

Ce didacticiel montre comment écrire du code .NET pour des scénarios courants d’utilisation du stockage de files d’attente Azure.This tutorial shows how to write .NET code for some common scenarios using Azure Queue storage. Les scénarios traités sont les suivants : création et suppression de files d’attente, et ajout, lecture et suppression des messages de file d’attente.Scenarios covered include creating and deleting queues and adding, reading, and deleting queue messages.

Durée estimée : 45 minutesEstimated time to complete: 45 minutes

Configuration requise :Prerequisites:

Présentation du stockage de files d'attenteWhat is Queue Storage?

Les files d’attente de stockage Azure sont un service permettant de stocker un grand nombre de messages accessibles depuis n’importe où dans le monde via des appels authentifiés avec HTTP ou HTTPS.Azure Queue storage is a service for storing large numbers of messages that can be accessed from anywhere in the world via authenticated calls using HTTP or HTTPS. Un simple message de file d’attente peut avoir une taille de 64 Ko et une file d’attente peut contenir des millions de messages, jusqu’à la limite de capacité totale d’un compte de stockage.A single queue message can be up to 64 KB in size, and a queue can contain millions of messages, up to the total capacity limit of a storage account.

Voici quelques utilisations courantes des files d’attente de stockage :Common uses of Queue storage include:

  • Création d'un journal des travaux en souffrance de travail à traiter de manière asynchroneCreating a backlog of work to process asynchronously
  • Transmission de messages d’un rôle web Azure à un rôle de travail AzurePassing messages from an Azure web role to an Azure worker role

Concepts du service de File d’attenteQueue Service Concepts

Le service de file d’attente contient les composants suivants :The Queue service contains the following components:

File d'attente 1

  • Format d’URL : Les files d’attente sont adressables à l’aide du format d’URL suivant :URL format: Queues are addressable using the following URL format:
    http://<storage account>.queue.core.windows.net/<queue>http://<storage account>.queue.core.windows.net/<queue>

    L'URL suivante désigne une file d'attente du schéma :The following URL addresses a queue in the diagram:

    http://myaccount.queue.core.windows.net/images-to-download

  • Compte de stockage : Tous les accès à Azure Storage passent par un compte de stockage.Storage Account: All access to Azure Storage is done through a storage account. Pour plus d’informations sur la capacité du compte de stockage, consultez la page Objectifs de performance et évolutivité du stockage Azure .See Azure Storage Scalability and Performance Targets for details about storage account capacity.

  • File d’attente : Une file d’attente contient un ensemble de messages.Queue: A queue contains a set of messages. Tous les messages doivent être dans une file d’attente.All messages must be in a queue. Notez que le nom de la file d’attente doit être en minuscules.Note that the queue name must be all lowercase. Pour plus d'informations sur l’affectation de noms à des files d’attente, consultez Affectation de noms pour les files d'attente et les métadonnées.For information on naming queues, see Naming Queues and Metadata.

  • Message : Message dans n’importe quel format d’une taille maximale de 64 Ko.Message: A message, in any format, of up to 64 KB. La durée maximale pendant laquelle un message peut rester dans la file d’attente est de 7 jours.The maximum time that a message can remain in the queue is 7 days.

Créer un compte de stockage AzureCreate an Azure storage account

Le moyen le plus simple de créer votre premier compte de stockage Azure est d’utiliser le portail Azure.The easiest way to create your first Azure storage account is by using the Azure portal. Pour plus d’informations, consultez la page Créer un compte de stockage.To learn more, see Create a storage account.

Vous pouvez également créer un compte de stockage Azure à l’aide d’Azure PowerShell, de l’interface de ligne de commande Azure ou du fournisseur de ressources de stockage Azure pour .NET.You can also create an Azure storage account by using Azure PowerShell, Azure CLI, or the Azure Storage Resource Provider for .NET.

Si vous préférez ne pas créer de compte de stockage dans Azure pour le moment, vous avez la possibilité d’utiliser l’émulateur de stockage Azure pour exécuter et tester votre code dans un environnement local.If you prefer not to create a storage account in Azure at this time, you can also use the Azure storage emulator to run and test your code in a local environment. Pour plus d’informations, consultez Utilisation de l’émulateur de stockage Azure pour le développement et le test.For more information, see Use the Azure Storage Emulator for Development and Testing.

Configuration de l'environnement de développementSet up your development environment

Ensuite, configurez votre environnement de développement dans Visual Studio afin d’être prêt pour essayer les exemples de code fournis dans ce guide.Next, set up your development environment in Visual Studio so you're ready to try the code examples in this guide.

Créer un projet d’application de console WindowsCreate a Windows console application project

Dans Visual Studio, créez une application de console Windows.In Visual Studio, create a new Windows console application. Les étapes suivantes vous montrent comment créer une application de console dans Visual Studio 2017.The following steps show you how to create a console application in Visual Studio 2017. Les étapes sont semblables pour d’autres versions de Visual Studio.The steps are similar in other versions of Visual Studio.

  1. Sélectionnez Fichier > Nouveau > Projet.Select File > New > Project.
  2. Sélectionnez Installé > Modèles > Visual C# > Bureau classique Windows.Select Installed > Templates > Visual C# > Windows Classic Desktop.
  3. Sélectionnez Application console (.NET Framework).Select Console App (.NET Framework).
  4. Saisissez un nom pour votre application dans le champ Nom.In the Name field, enter a name for your application.
  5. Sélectionnez OK.Select OK.

Capture d’écran de la boîte de dialogue Nouveau projet dans Visual Studio

Tous les exemples de code figurant dans ce didacticiel peuvent être ajoutés à la méthode Main() du fichier Program.cs de votre application de console.All code examples in this tutorial can be added to the Main() method of your console application's Program.cs file.

Vous pouvez utiliser la bibliothèque cliente d’Azure Storage dans n’importe quelle application .NET, y compris un service cloud Azure, une application web, une application de bureau ou une application mobile.You can use the Azure Storage Client Library in any type of .NET application, including an Azure cloud service or web app, and desktop and mobile applications. Dans ce guide, nous utilisons une application console pour plus de simplicité.In this guide, we use a console application for simplicity.

Utiliser NuGet pour installer les packages requisUse NuGet to install the required packages

Vous devez référencer deux packages dans votre projet pour terminer ce didacticiel :There are two packages you need to reference in your project to complete this tutorial:

Vous pouvez utiliser NuGet pour obtenir ces deux packages.You can use NuGet to obtain both packages. Procédez comme suit :Follow these steps:

  1. Cliquez avec le bouton droit sur votre projet dans l’Explorateur de solutions, puis sélectionnez Gérer les packages NuGet.Right-click your project in Solution Explorer, and choose Manage NuGet Packages.
  2. Recherchez « WindowsAzure.Storage » en ligne, puis sélectionnez Installer pour installer la bibliothèque cliente Azure Storage et ses dépendances.Search online for "WindowsAzure.Storage", and select Install to install the Storage Client Library and its dependencies.
  3. Recherchez « WindowsAzure.ConfigurationManager » en ligne, puis sélectionnez Installer pour installer Azure Configuration Manager.Search online for "WindowsAzure.ConfigurationManager", and select Install to install the Azure Configuration Manager.

Notes

Le package de bibliothèque cliente Azure Storage est également disponible dans le Kit de développement logiciel (SDK) Azure pour .NET.The Storage Client Library package is also included in the Azure SDK for .NET. Toutefois, nous vous recommandons d’installer également la bibliothèque cliente Azure Storage à partir de NuGet pour vous assurer que vous avez toujours la dernière version de la bibliothèque cliente.However, we recommend that you also install the Storage Client Library from NuGet to ensure that you always have the latest version of the client library.

Les dépendances ODataLib de la bibliothèque de client de stockage pour .NET sont résolues via les packages ODataLib disponibles sur NuGet et non à partir des services de données WCF.The ODataLib dependencies in the Storage Client Library for .NET are resolved by the ODataLib packages available on NuGet, not from WCF Data Services. Vous pouvez télécharger directement les bibliothèques ODataLib ou les référencer avec votre projet de code via NuGet.The ODataLib libraries can be downloaded directly, or referenced by your code project through NuGet. Les packages ODataLib utilisés par la bibliothèque cliente de stockage sont OData, Edm et Spatial.The specific ODataLib packages used by the Storage Client Library are OData, Edm, and Spatial. Bien qu’elles soient utilisées par les classes de stockage de Table Azure, ces bibliothèques sont des dépendances requises pour la programmation avec la bibliothèque cliente de stockage.While these libraries are used by the Azure Table storage classes, they are required dependencies for programming with the Storage Client Library.

Déterminer votre environnement cibleDetermine your target environment

Vous avez le choix entre deux environnements pour exécuter les exemples de ce guide :You have two environment options for running the examples in this guide:

  • Vous pouvez exécuter votre code sur un compte Azure Storage dans le cloud.You can run your code against an Azure Storage account in the cloud.
  • Vous pouvez exécuter votre code sur l’émulateur de stockage Azure.You can run your code against the Azure storage emulator. L’émulateur de stockage est un environnement local qui émule un compte Azure Storage dans le cloud.The storage emulator is a local environment that emulates an Azure Storage account in the cloud. L’émulateur est une option gratuite permettant de tester et déboguer votre code lors du développement de votre application.The emulator is a free option for testing and debugging your code while your application is under development. L’émulateur utilise un compte et une clé connus.The emulator uses a well-known account and key. Pour plus d’informations, consultez Utilisation de l’émulateur de stockage Azure pour le développement et le test.For more information, see Use the Azure storage emulator for development and testing.

Si vous ciblez un compte de stockage dans le cloud, copiez la clé d’accès primaire de votre compte de stockage à partir du portail Azure.If you are targeting a storage account in the cloud, copy the primary access key for your storage account from the Azure portal. Pour plus d’informations, consultez l’article Clés d’accès.For more information, see Access keys.

Notes

Vous pouvez cibler l’émulateur de stockage pour éviter les frais liés à l’utilisation des services de stockage Azure.You can target the storage emulator to avoid incurring any costs associated with Azure Storage. Toutefois, si vous choisissez de cibler un compte de stockage Azure situé dans le cloud, les frais associés à l’utilisation de ce didacticiel seront négligeables.However, if you do choose to target an Azure storage account in the cloud, costs for performing this tutorial will be negligible.

Configurer votre chaîne de connexion de stockageConfigure your storage connection string

La bibliothèque du client de stockage Azure pour .NET prend en charge l’utilisation d’une chaîne de connexion de stockage pour la configuration de points de terminaison et d’informations d’identification permettant d’accéder aux services de stockage.The Azure Storage Client Library for .NET supports using a storage connection string to configure endpoints and credentials for accessing storage services. La meilleure façon de conserver votre chaîne de connexion de stockage est dans un fichier de configuration.The best way to maintain your storage connection string is in a configuration file.

Pour plus d’informations sur les chaînes de connexion, voir Configuration d’une chaîne de connexion dans Stockage Azure.For more information about connection strings, see Configure a connection string to Azure Storage.

Notes

Votre clé de compte de stockage est similaire au mot de passe racine pour votre compte de stockage.Your storage account key is similar to the root password for your storage account. Veillez toujours à protéger votre clé de compte de stockage.Always be careful to protect your storage account key. Évitez de la communiquer à d’autres utilisateurs, de la coder en dur ou de l’enregistrer dans un fichier texte brut accessible à d’autres personnes.Avoid distributing it to other users, hard-coding it, or saving it in a plain-text file that is accessible to others. Régénérez votre clé à l’aide du portail Azure si vous pensez que sa confidentialité est compromise.Regenerate your key by using the Azure portal if you believe it may have been compromised.

Pour configurer votre chaîne de connexion, ouvrez le fichier app.config depuis l’Explorateur de solutions dans Visual Studio.To configure your connection string, open the app.config file from Solution Explorer in Visual Studio. Ajoutez le contenu de l’élément <appSettings> indiqué ci-dessous.Add the contents of the <appSettings> element shown below. Remplacez account-name par le nom de votre compte de stockage et account-key par votre clé d’accès au compte :Replace account-name with the name of your storage account, and account-key with your account access key:

<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
    <appSettings>
        <add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=account-name;AccountKey=account-key" />
    </appSettings>
</configuration>

Par exemple, votre paramètre de configuration est semblable à :For example, your configuration setting appears similar to:

<add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=storagesample;AccountKey=GMuzNHjlB3S9itqZJHHCnRkrokLkcSyW7yK9BRbGp0ENePunLPwBgpxV1Z/pVo9zpem/2xSHXkMqTHHLcx8XRA==" />

Pour cibler l’émulateur de stockage, vous pouvez utiliser un raccourci qui correspond à la clé et au nom de compte connus. Dans ce cas, le paramètre de votre chaîne de connexion est :In that case, your connection string setting is:

<add key="StorageConnectionString" value="UseDevelopmentStorage=true;" />

Ajouter des directives d’utilisationAdd using directives

Ajoutez les directives using suivantes au fichier Program.cs :Add the following using directives to the top of the Program.cs file:

using Microsoft.Azure; // Namespace for CloudConfigurationManager
using Microsoft.Azure.Storage; // Namespace for CloudStorageAccount
using Microsoft.Azure.Storage.Queue; // Namespace for Queue storage types

Copier vos informations d’identification depuis le portail AzureCopy your credentials from the Azure portal

L’exemple de code a besoin d’autoriser l’accès à votre compte de stockage.The sample code needs to authorize access to your storage account. Pour l’autorisation, vous devez fournir vos informations d’identification du compte de stockage à l’application sous la forme d’une chaîne de connexion.To authorize, you provide the application with your storage account credentials in the form of a connection string. Pour afficher les informations d’identification de votre compte de stockage :To view your storage account credentials:

  1. Accédez au portail Azure.Navigate to the Azure portal.

  2. Recherchez votre compte de stockage.Locate your storage account.

  3. Dans la section Paramètres de la présentation du compte de stockage, sélectionnez Clés d’accès.In the Settings section of the storage account overview, select Access keys. Vos clés d’accès au compte s’affichent, ainsi que la chaîne de connexion complète de chaque clé.Your account access keys appear, as well as the complete connection string for each key.

  4. Recherchez la valeur de Chaîne de connexion sous clé1, puis cliquez sur le bouton Copier pour copier la chaîne de connexion.Find the Connection string value under key1, and click the Copy button to copy the connection string. Vous allez ajouter la valeur de chaîne de connexion dans une variable d’environnement à l’étape suivante.You will add the connection string value to an environment variable in the next step.

    Capture d’écran montrant comment copier une chaîne de connexion à partir du portail Azure

Analyse de la chaîne de connexionParse the connection string

La Bibliothèque Microsoft Azure Configuration Manager pour .NET que vous avez référencée ci-dessus fournit une classe pour l’analyse d’une chaîne de connexion à partir d’un fichier de configuration.The Microsoft Azure Configuration Manager Library for .NET provides a class for parsing a connection string from a configuration file. La classe CloudConfigurationManager analyse les paramètres de configuration, que l’application cliente soit exécutée sur le Bureau, sur un appareil mobile, dans une machine virtuelle Azure ou dans un service cloud Azure.The CloudConfigurationManager class parses configuration settings regardless of whether the client application is running on the desktop, on a mobile device, in an Azure virtual machine, or in an Azure cloud service.

Pour référencer le package CloudConfigurationManager, ajoutez la directive using suivante :To reference the CloudConfigurationManager package, add the following using directive:

using Microsoft.Azure; //Namespace for CloudConfigurationManager
using Microsoft.WindowsAzure.Storage;

Voici un exemple indiquant comment récupérer une chaîne de connexion d’un fichier de configuration :Here's an example that shows how to retrieve a connection string from a configuration file:

// Parse the connection string and return a reference to the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

L’utilisation d’Azure Configuration Manager est facultative.Using the Azure Configuration Manager is optional. Vous pouvez également utiliser une API comme la classe ConfigurationManager de .NET Framework.You can also use an API like the .NET Framework's ConfigurationManager class.

Création du client du service QueueCreate the Queue service client

La classe CloudQueueClient vous permet de récupérer des files d’attente stockées dans Queue Storage.The CloudQueueClient class enables you to retrieve queues stored in Queue storage. Voici un moyen de créer le client du service :Here's one way to create the service client:

CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

Vous êtes maintenant prêt à écrire du code qui lit et écrit des données dans le Queue Storage.Now you are ready to write code that reads data from and writes data to Queue storage.

Créer une file d'attenteCreate a queue

Cet exemple montre comment créer une file d’attente, si elle n’existe pas encore :This example shows how to create a queue if it does not already exist:

// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

// Retrieve a reference to a container.
CloudQueue queue = queueClient.GetQueueReference("myqueue");

// Create the queue if it doesn't already exist
queue.CreateIfNotExists();

Insertion d'un message dans une file d'attenteInsert a message into a queue

Pour insérer un message dans une file d'attente existante, commencez par créer un CloudQueueMessage.To insert a message into an existing queue, first create a new CloudQueueMessage. Appelez ensuite la méthode AddMessage .Next, call the AddMessage method. Un CloudQueueMessage peut être créé à partir d’une chaîne (au format UTF-8) ou d’un tableau d’octets.A CloudQueueMessage can be created from either a string (in UTF-8 format) or a byte array. Voici le code qui crée une file d'attente (si elle n'existe pas) et insère le message « Hello, World » :Here is code which creates a queue (if it doesn't exist) and inserts the message 'Hello, World':

// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

// Retrieve a reference to a queue.
CloudQueue queue = queueClient.GetQueueReference("myqueue");

// Create the queue if it doesn't already exist.
queue.CreateIfNotExists();

// Create a message and add it to the queue.
CloudQueueMessage message = new CloudQueueMessage("Hello, World");
queue.AddMessage(message);

Lecture furtive du message suivantPeek at the next message

Vous pouvez lire furtivement le message au début de la file d'attente sans l'enlever de la file d'attente en appelant la méthode PeekMessage .You can peek at the message in the front of a queue without removing it from the queue by calling the PeekMessage method.

// Retrieve storage account from connection string
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create the queue client
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

// Retrieve a reference to a queue
CloudQueue queue = queueClient.GetQueueReference("myqueue");

// Peek at the next message
CloudQueueMessage peekedMessage = queue.PeekMessage();

// Display message.
Console.WriteLine(peekedMessage.AsString);

Modification du contenu d'un message en file d'attenteChange the contents of a queued message

Vous pouvez modifier le contenu d'un message placé dans la file d'attente.You can change the contents of a message in-place in the queue. Si le message représente une tâche, vous pouvez utiliser cette fonctionnalité pour mettre à jour l'état de la tâche.If the message represents a work task, you could use this feature to update the status of the work task. Le code suivant met à jour le message de la file d'attente avec un nouveau contenu et ajoute 60 secondes au délai d'expiration de la visibilité.The following code updates the queue message with new contents, and sets the visibility timeout to extend another 60 seconds. Cette opération enregistre l'état de la tâche associée au message et accorde une minute supplémentaire au client pour traiter le message.This saves the state of work associated with the message, and gives the client another minute to continue working on the message. Vous pouvez utiliser cette technique pour suivre des flux de travail à plusieurs étapes sur les messages de file d'attente, sans devoir reprendre du début si une étape du traitement échoue à cause d'une défaillance matérielle ou logicielle.You could use this technique to track multi-step workflows on queue messages, without having to start over from the beginning if a processing step fails due to hardware or software failure. Normalement, vous conservez aussi un nombre de nouvelles tentatives et si le message est retenté plus de n fois, vous le supprimez.Typically, you would keep a retry count as well, and if the message is retried more than n times, you would delete it. Cela protège du déclenchement d'une erreur d'application par un message chaque fois qu'il est traité.This protects against a message that triggers an application error each time it is processed.

// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

// Retrieve a reference to a queue.
CloudQueue queue = queueClient.GetQueueReference("myqueue");

// Get the message from the queue and update the message contents.
CloudQueueMessage message = queue.GetMessage();
message.SetMessageContent("Updated contents.");
queue.UpdateMessage(message,
    TimeSpan.FromSeconds(60.0),  // Make it invisible for another 60 seconds.
    MessageUpdateFields.Content | MessageUpdateFields.Visibility);

Enlèvement du message suivant de la file d'attenteDe-queue the next message

Votre code enlève un message d'une file d'attente en deux étapes.Your code de-queues a message from a queue in two steps. Lorsque vous appelez GetMessage, vous obtenez le message suivant dans une file d'attente.When you call GetMessage, you get the next message in a queue. Un message renvoyé par GetMessage devient invisible par les autres codes lisant les messages de cette file d'attente.A message returned from GetMessage becomes invisible to any other code reading messages from this queue. Par défaut, ce message reste invisible pendant 30 secondes.By default, this message stays invisible for 30 seconds. Pour finaliser la suppression du message de la file d'attente, vous devez aussi appeler DeleteMessage.To finish removing the message from the queue, you must also call DeleteMessage. Ce processus de suppression d'un message en deux étapes garantit que, si votre code ne parvient pas à traiter un message à cause d'une défaillance matérielle ou logicielle, une autre instance de votre code peut obtenir le même message et réessayer.This two-step process of removing a message assures that if your code fails to process a message due to hardware or software failure, another instance of your code can get the same message and try again. Votre code appelle DeleteMessage juste après le traitement du message.Your code calls DeleteMessage right after the message has been processed.

// Retrieve storage account from connection string
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create the queue client
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

// Retrieve a reference to a queue
CloudQueue queue = queueClient.GetQueueReference("myqueue");

// Get the next message
CloudQueueMessage retrievedMessage = queue.GetMessage();

//Process the message in less than 30 seconds, and then delete the message
queue.DeleteMessage(retrievedMessage);

Utiliser le modèle Async-Await avec les API de stockage de files d’attente communesUse Async-Await pattern with common Queue storage APIs

Cet exemple décrit comment utiliser le modèle Async-Await avec les API de stockage de files d’attente communes.This example shows how to use the Async-Await pattern with common Queue storage APIs. L’exemple appelle la version asynchrone de chacune des méthodes spécifiées, comme l’indique le suffixe Async de chaque méthode.The sample calls the asynchronous version of each of the given methods, as indicated by the Async suffix of each method. Quand une méthode asynchrone est utilisée, le modèle Async-Await suspend l’exécution locale jusqu’à la fin de l’appel.When an async method is used, the async-await pattern suspends local execution until the call completes. Ce comportement permet au thread actuel d’effectuer d’autres tâches afin d’éviter les goulots d’étranglement au niveau des performances et d’améliorer la réactivité globale de votre application.This behavior allows the current thread to do other work, which helps avoid performance bottlenecks and improves the overall responsiveness of your application. Pour plus d’informations sur l’utilisation du modèle Async-Await dans .NET, consultez l’article Programmation asynchrone avec Async et Await (C# et Visual Basic)For more details on using the Async-Await pattern in .NET see Async and Await (C# and Visual Basic)

// Create the queue if it doesn't already exist
if(await queue.CreateIfNotExistsAsync())
{
    Console.WriteLine("Queue '{0}' Created", queue.Name);
}
else
{
    Console.WriteLine("Queue '{0}' Exists", queue.Name);
}

// Create a message to put in the queue
CloudQueueMessage cloudQueueMessage = new CloudQueueMessage("My message");

// Async enqueue the message
await queue.AddMessageAsync(cloudQueueMessage);
Console.WriteLine("Message added");

// Async dequeue the message
CloudQueueMessage retrievedMessage = await queue.GetMessageAsync();
Console.WriteLine("Retrieved message with content '{0}'", retrievedMessage.AsString);

// Async delete the message
await queue.DeleteMessageAsync(retrievedMessage);
Console.WriteLine("Deleted message");

Utilisation d’options supplémentaires pour l’enlèvement des messagesLeverage additional options for de-queuing messages

Il existe deux façons de personnaliser la récupération des messages à partir d'une file d'attente.There are two ways you can customize message retrieval from a queue. Premièrement, vous pouvez obtenir un lot de messages (jusqu'à 32).First, you can get a batch of messages (up to 32). Deuxièmement, vous pouvez définir un délai d'expiration de l'invisibilité plus long ou plus court afin d'accorder à votre code plus ou moins de temps pour traiter complètement chaque message.Second, you can set a longer or shorter invisibility timeout, allowing your code more or less time to fully process each message. L'exemple de code suivant utilise la méthode GetMessages pour obtenir 20 messages en un appel.The following code example uses the GetMessages method to get 20 messages in one call. Ensuite, il traite chaque message à l'aide d'une boucle foreach .Then it processes each message using a foreach loop. Il définit également le délai d'expiration de l'invisibilité sur cinq minutes pour chaque message.It also sets the invisibility timeout to five minutes for each message. Notez que le délai de 5 minutes démarre en même temps pour tous les messages, donc une fois les 5 minutes écoulées après l'appel de GetMessages, tous les messages n'ayant pas été supprimés redeviennent visibles.Note that the 5 minutes starts for all messages at the same time, so after 5 minutes have passed since the call to GetMessages, any messages which have not been deleted will become visible again.

// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

// Retrieve a reference to a queue.
CloudQueue queue = queueClient.GetQueueReference("myqueue");

foreach (CloudQueueMessage message in queue.GetMessages(20, TimeSpan.FromMinutes(5)))
{
    // Process all messages in less than 5 minutes, deleting each message after processing.
    queue.DeleteMessage(message);
}

Obtention de la longueur de la file d'attenteGet the queue length

Vous pouvez obtenir une estimation du nombre de messages dans une file d'attente.You can get an estimate of the number of messages in a queue. La méthode FetchAttributes demande au service de files d'attente d'extraire les attributs de la file d'attente, y compris le nombre de messages.The FetchAttributes method asks the Queue service to retrieve the queue attributes, including the message count. La propriété ApproximateMessageCount renvoie la dernière valeur extraite par la méthode FetchAttributes, sans appeler le service de files d’attente.The ApproximateMessageCount property returns the last value retrieved by the FetchAttributes method, without calling the Queue service.

// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

// Retrieve a reference to a queue.
CloudQueue queue = queueClient.GetQueueReference("myqueue");

// Fetch the queue attributes.
queue.FetchAttributes();

// Retrieve the cached approximate message count.
int? cachedMessageCount = queue.ApproximateMessageCount;

// Display number of messages.
Console.WriteLine("Number of messages in queue: " + cachedMessageCount);

Suppression d'une file d'attenteDelete a queue

Pour supprimer une file d'attente et tous les messages qu'elle contient, appelez la méthode Delete sur l'objet file d'attente.To delete a queue and all the messages contained in it, call the Delete method on the queue object.

// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

// Retrieve a reference to a queue.
CloudQueue queue = queueClient.GetQueueReference("myqueue");

// Delete the queue.
queue.Delete();

Étapes suivantesNext steps

Maintenant que vous connaissez les bases du stockage des files d'attente, consultez les liens suivants pour apprendre à exécuter les tâches de stockage plus complexes.Now that you've learned the basics of Queue storage, follow these links to learn about more complex storage tasks.