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

Vue d’ensembleOverview

Le Stockage File 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 they can scale independently. Le Stockage File d’attente offre une messagerie asynchrone 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 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

PrérequisPrerequisites

Présentation du stockage File 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. Le stockage File d’attente est couramment utilisé pour créer un backlog de travail à traiter de façon asynchrone.Queue storage is often used to create a backlog of work to process asynchronously.

Concepts du service File d’attenteQueue service concepts

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

Composants du service File d’attente Azure

  • Format d’URL : les files d’attente sont adressables à l’aide du format d’URL suivant : http://<storage account>.queue.core.windows.net/<queue>URL format: Queues are addressable using the following URL format: 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/incoming-orders

  • 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 les comptes de stockage, consultez Vue d’ensemble des comptes de stockage.For more information about storage accounts, see Storage account overview.

  • 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. Pour les versions du 29 juillet 2017 ou ultérieures, la durée de vie maximale peut être n’importe quel nombre positif, ou -1 indiquant que le message n’expire pas.For version 2017-07-29 or later, the maximum time-to-live can be any positive number, or -1 indicating that the message doesn't expire. Si ce paramètre est omis, la valeur par défaut de la durée de vie est de sept jours.If this parameter is omitted, the default time-to-live is seven 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.

Configurer 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 console dans Visual Studio 2019.The following steps show you how to create a console application in Visual Studio 2019. 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 > ProjetSelect File > New > Project
  2. Sélectionnez Plateforme > WindowsSelect Platform > Windows
  3. Sélectionnez Application console (.NET Framework)Select Console App (.NET Framework)
  4. Sélectionnez Suivant.Select Next
  5. Saisissez un nom pour votre application dans le champ Nom du projet.In the Project name field, enter a name for your application
  6. Sélectionnez CréerSelect Create

Tous les exemples de code figurant dans ce didacticiel peuvent être ajoutés à la méthode Main() dans le fichier Program.cs de votre application 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 les bibliothèques de client du Stockage Azure dans n’importe quelle application .NET, y compris un service cloud Azure, une application web, ou une application de bureau ou mobile.You can use the Azure Storage client libraries 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

Pour terminer ce didacticiel, vous devez référencer les quatre packages suivants dans votre projet :You need to reference the following four packages in your project to complete this tutorial:

Vous pouvez utiliser NuGet pour obtenir ces packages.You can use NuGet to obtain these 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. Sélectionnez Parcourir.Select Browse
  3. Recherchez « Azure.Storage.Queues » en ligne, puis sélectionnez Installer pour installer la bibliothèque cliente Stockage Azure et ses dépendances.Search online for "Azure.Storage.Queues", and select Install to install the Storage client library and its dependencies. Cela aura également pour effet d’installer les bibliothèques Azure.Storage.Common et Azure.Core, qui sont des dépendances de la bibliothèque de file d’attente.This will also install the Azure.Storage.Common and Azure.Core libraries, which are dependencies of the queue library.
  4. Recherchez « System.Configuration.ConfigurationManager » en ligne, puis sélectionnez Installer pour installer Configuration Manager.Search online for "System.Configuration.ConfigurationManager", and select Install to install the Configuration Manager.

Notes

Les packages de bibliothèques de client du Stockage Azure sont également disponibles dans le Kit de développement logiciel (SDK) Azure pour .NET.The Storage client libraries packages are also included in the Azure SDK for .NET. Toutefois, nous vous recommandons d’installer également les bibliothèques de client du Stockage Azure à partir de NuGet, pour vous assurer que vous avez toujours les dernières versions.However, we recommend that you also install the Storage client libraries from NuGet to ensure that you always have the latest versions.

Les dépendances ODataLib de la bibliothèque de client du Stockage Azure 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 libraries 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 de client du Stockage Azure sont OData, Edm et Spatial.The specific ODataLib packages used by the Storage client libraries 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 de client du Stockage Azure.While these libraries are used by the Azure Table storage classes, they are required dependencies for programming with the Storage client libraries.

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 Azurite.You can run your code against the Azurite storage emulator. L’émulateur de stockage Azurite est un environnement local qui émule un compte Stockage Azure dans le cloud.Azurite is a local environment that emulates an Azure Storage account in the cloud. Azurite est une option gratuite permettant de tester et déboguer votre code lors du développement de votre application.Azurite 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 Azurite pour le développement et le test de Stockage Azure local.For more information, see Use the Azurite emulator for local Azure Storage development and testing.

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.

Obtenir votre chaîne de connexion de stockageGet your storage connection string

Les bibliothèques de client du Stockage Azure pour .NET prennent 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 libraries for .NET support using a storage connection string to configure endpoints and credentials for accessing storage services. Pour plus d’informations, consultez Gérer les clés d’accès au compte de stockage.For more information, see Manage storage account access keys.

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

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.

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 configurer votre chaîne de connexion, ouvrez le fichier app.config depuis l’Explorateur de solutions de 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 connection-string par la valeur copiée depuis votre compte de stockage dans le portail :Replace connection-string with the value you copied from your storage account in the portal:

<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
    <appSettings>
        <add key="StorageConnectionString" value="connection-string" />
    </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==EndpointSuffix=core.windows.net" />

Pour cibler l’émulateur de stockage Azurite, vous pouvez utiliser un raccourci qui correspond à la clé et au nom de compte connus.To target the Azurite storage emulator, you can use a shortcut that maps to the well-known account name and key. 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 System; // Namespace for Console output
using System.Configuration; // Namespace for ConfigurationManager
using System.Threading.Tasks; // Namespace for Task
using Azure.Storage.Queues; // Namespace for Queue storage types
using Azure.Storage.Queues.Models; // Namespace for PeekedMessage

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

La classe QueueClient vous permet de récupérer des files d’attente stockées dans Stockage File d’attente.The QueueClient 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:

// Get the connection string from app settings
string connectionString = ConfigurationManager.AppSettings["storageConnectionString"];

// Instantiate a QueueClient which will be used to create and manipulate the queue
QueueClient queueClient = new QueueClient(connectionString, "myqueue");

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 :This example shows how to create a queue:

// Get the connection string from app settings
string connectionString = ConfigurationManager.AppSettings["storageConnectionString"];

// Instantiate a QueueClient which will be used to create and manipulate the queue
QueueClient queueClient = new QueueClient(connectionString, "myqueue");

// Create the queue
queueClient.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, appelez la méthode SendMessage.To insert a message into an existing queue, call the SendMessage method. Un message peut être un string (au format UTF-8) ou un tableau byte.A message can be either a string (in UTF-8 format) or a byte array. Le code suivant crée une file d’attente (si elle n’existe pas) et insère un message :The following code creates a queue (if it doesn't exist) and inserts a message:

// Get the connection string from app settings
string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

// Instantiate a QueueClient which will be used to create and manipulate the queue
QueueClient queueClient = new QueueClient(connectionString, "myqueue");

 // Create the text message to add to the queue
string message = "First Message to azure Queue";

if (queueClient.Exists())
{
    // Send a message to the queue
    queueClient.SendMessage(message);
}

Lecture furtive du message suivantPeek at the next message

Vous pouvez lire furtivement le message dans la file d’attente sans l’enlever de la file d’attente en appelant la méthode PeekMessages.You can peek at the messages in the queue without removing them from the queue by calling the PeekMessages method. Si vous ne transmettez pas de valeur pour le paramètre maxMessages, la valeur par défaut consiste à afficher un aperçu d’un message.If you don't pass a value for the maxMessages parameter, the default is to peek at one message.

// Get the connection string from app settings
string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

// Instantiate a QueueClient which will be used to create and manipulate the queue
QueueClient queueClient = new QueueClient(connectionString, "myqueue");

if (queueClient.Exists())
{ 
    // Peek at the next message
    PeekedMessage[] peekedMessage = queueClient.PeekMessages();

    // Display the message
    Console.WriteLine($"Peeked message: '{peekedMessage[0].MessageText}'");
}

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.

// Get the connection string from app settings
string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

// Instantiate a QueueClient which will be used to create and manipulate the queue
QueueClient queueClient = new QueueClient(connectionString, "myqueue");

if (queueClient.Exists())
{
    // Get the message from the queue
    QueueMessage[] message = queueClient.ReceiveMessages();

    // Update the message contents
    queueClient.UpdateMessage(message[0].MessageId, 
            message[0].PopReceipt, 
            "Updated contents",
            TimeSpan.FromSeconds(60.0)  // Make it invisible for another 60 seconds
        );
}

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

Supprimez un message d’une file d’attente en deux étapes.De-queue a message from a queue in two steps. Lorsque vous appelez ReceiveMessages, vous obtenez le message suivant dans une file d’attente.When you call ReceiveMessages, you get the next message in a queue. Un message renvoyé par ReceiveMessages devient invisible par les autres codes lisant les messages de cette file d'attente.A message returned from ReceiveMessages 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.

// Get the connection string from app settings
string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

// Instantiate a QueueClient which will be used to create and manipulate the queue
QueueClient queueClient = new QueueClient(connectionString, "myqueue");

if (queueClient.Exists())
{
    // Get the next message
    QueueMessage[] retrievedMessage = queueClient.ReceiveMessages();

    // Process (i.e. print) the message in less than 30 seconds
    Console.WriteLine($"De-queued message: '{retrievedMessage[0].MessageText}'");

    // Delete the message
    queueClient.DeleteMessage(retrievedMessage[0].MessageId, retrievedMessage[0].PopReceipt);
}

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)

// Get the connection string from app settings
string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

// Instantiate a QueueClient which will be used to create and manipulate the queue
QueueClient queueClient = new QueueClient(connectionString, "myqueue");

// Create the queue if it doesn't already exist
await queueClient.CreateIfNotExistsAsync();

if (await queueClient.ExistsAsync())
{
    Console.WriteLine($"Queue '{queueClient.Name}' created");
}
else
{
    Console.WriteLine($"Queue '{queueClient.Name}' exists");
}

// Async enqueue the message
await queueClient.SendMessageAsync("Hello, World");
Console.WriteLine($"Message added");

// Async receive the message
QueueMessage[] retrievedMessage = await queueClient.ReceiveMessagesAsync();
Console.WriteLine($"Retrieved message with content '{retrievedMessage[0].MessageText}'");

// Async delete the message
await queueClient.DeleteMessageAsync(retrievedMessage[0].MessageId, retrievedMessage[0].PopReceipt);
Console.WriteLine($"Deleted message: '{retrievedMessage[0].MessageText}'");

// Async delete the queue
await queueClient.DeleteAsync();
Console.WriteLine($"Deleted queue: '{queueClient.Name}'");

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 ReceiveMessages pour obtenir 20 messages en un appel.The following code example uses the ReceiveMessages 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 ReceiveMessages, 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 ReceiveMessages, any messages which have not been deleted will become visible again.

// Get the connection string from app settings
string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

// Instantiate a QueueClient which will be used to create and manipulate the queue
QueueClient queueClient = new QueueClient(connectionString, "myqueue");

if (queueClient.Exists())
{
    // Receive and process 20 messages
    QueueMessage[] receivedMessages = queueClient.ReceiveMessages(20, TimeSpan.FromMinutes(5));

    foreach (QueueMessage message in receivedMessages)
    {
        // Process (i.e. print) the messages in less than 5 minutes
        Console.WriteLine($"De-queued message: '{message.MessageText}'");

        // Delete the message
        queueClient.DeleteMessage(message.MessageId, message.PopReceipt);
    }
}

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 GetProperties demande au service de File d’attente d’extraire les propriétés de la file d’attente, y compris le nombre de messages.The GetProperties method asks the Queue service to retrieve the queue properties, including the message count. La propriété ApproximateMessagesCount contient le nombre approximatif de messages dans la file d’attente.The ApproximateMessagesCount property contains the approximate number of messages in the queue. Ce nombre n’est pas inférieur au nombre réel de messages dans la file d’attente, mais peut être supérieur.This number is not lower than the actual number of messages in the queue, but could be higher.

// Get the connection string from app settings
string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

// Instantiate a QueueClient which will be used to create and manipulate the queue
QueueClient queueClient = new QueueClient(connectionString, "myqueue");

if (queueClient.Exists())
{
    QueueProperties properties = queueClient.GetProperties();

    // Retrieve the cached approximate message count.
    int cachedMessagesCount = properties.ApproximateMessagesCount;

    // Display number of messages.
    Console.WriteLine($"Number of messages in queue: {cachedMessagesCount}");
}

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.

// Get the connection string from app settings
string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

// Instantiate a QueueClient which will be used to create and manipulate the queue
QueueClient queueClient = new QueueClient(connectionString, "myqueue");

if (queueClient.Exists())
{
    // Delete the queue
    queueClient.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.