Introducción al Almacenamiento en cola de Azure mediante .NETGet started with Azure Queue storage using .NET

Información generalOverview

El almacenamiento en cola de Azure proporciona mensajería en la nube entre componentes de aplicaciones.Azure Queue storage provides cloud messaging between application components. A la hora de diseñar aplicaciones para realizar su escalado, los componentes de las mismas suelen desacoplarse, por lo que se pueden escalar de forma independiente.In designing applications for scale, application components are often decoupled so they can scale independently. La instancia de Queue Storage ofrece mensajería asincrónica entre los componentes de las aplicaciones, independientemente de si se ejecutan en la nube, en el escritorio, en un servidor local o en un dispositivo móvil.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. Además, este tipo de almacenamiento admite la administración de tareas asincrónicas y la creación de flujos de trabajo de procesos.Queue storage also supports managing asynchronous tasks and building process work flows.

Acerca de este tutorialAbout this tutorial

Este tutorial muestra cómo escribir código .NET para algunos escenarios comunes con el Almacenamiento en cola de Azure.This tutorial shows how to write .NET code for some common scenarios using Azure Queue storage. Entre los escenarios descritos se incluyen los siguientes: creación y eliminación de colas y adición, lectura y eliminación de mensajes de la cola.Scenarios covered include creating and deleting queues and adding, reading, and deleting queue messages.

Tiempo estimado para completarla: 45 minutosEstimated time to complete: 45 minutes

PrerrequisitosPrerequisites

¿Qué es Queue Storage?What is Queue storage?

El almacenamiento en cola de Azure es un servicio para almacenar grandes cantidades de mensajes a los que puede obtenerse acceso desde cualquier lugar del mundo a través de llamadas autenticadas con HTTP o 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 único mensaje en cola puede tener un tamaño de hasta 64 KB y una cola puede contener millones de mensajes, hasta el límite de capacidad total de una cuenta de almacenamiento.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. Queue Storage se usa normalmente para crear un trabajo pendiente del trabajo que se va a procesar de forma asincrónica.Queue storage is often used to create a backlog of work to process asynchronously.

Conceptos del servicio QueueQueue service concepts

Azure Queue service contiene los siguientes componentes:The Azure Queue service contains the following components:

Componentes de Azure Queue service

  • Formato de dirección URL: Las colas son direccionables mediante el formato de dirección URL siguiente: 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>

    La siguiente dirección URL dirige a una cola del diagrama:The following URL addresses a queue in the diagram:

    http://myaccount.queue.core.windows.net/incoming-orders

  • Cuenta de almacenamiento: Todo el acceso a Azure Storage se realiza a través de una cuenta de almacenamiento.Storage Account: All access to Azure Storage is done through a storage account. Para más información sobre las cuentas de almacenamiento, consulte Introducción a las cuentas de Storage.For more information about storage accounts, see Storage account overview.

  • Cola: una cola contiene un conjunto de mensajes.Queue: A queue contains a set of messages. Todos los mensajes deben encontrarse en una cola.All messages must be in a queue. Tenga en cuenta que el nombre de la cola debe ir en minúsculas.Note that the queue name must be all lowercase. Para más información, consulte Asignar nombres a colas y metadatos.For information on naming queues, see Naming Queues and Metadata.

  • Mensaje: un mensaje, en cualquier formato, de hasta 64 KB.Message: A message, in any format, of up to 64 KB. El tiempo máximo que un mensaje puede permanecer en la cola es de 7 días.The maximum time that a message can remain in the queue is 7 days. A partir de la versión del 2017-07-29, inclusive, el tiempo de vida máximo puede ser cualquier número positivo o -1, lo que indica que el mensaje no expira.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 se omite este parámetro, el tiempo de vida predeterminado es siete días.If this parameter is omitted, the default time-to-live is seven days.

Creación de una cuenta de Azure StorageCreate an Azure storage account

La forma más fácil de crear la primera cuenta de Azure Storage es a través de Azure Portal.The easiest way to create your first Azure storage account is by using the Azure portal. Para obtener más información, consulte Crear una cuenta de almacenamiento.To learn more, see Create a storage account.

Puede crear también una cuenta de Azure Storage mediante Azure PowerShell, la CLI de Azure o el proveedor de recursos de Azure Storage para .NET.You can also create an Azure storage account by using Azure PowerShell, Azure CLI, or the Azure Storage Resource Provider for .NET.

Si no quiere crear una cuenta de almacenamiento en Azure en este momento, también puede utilizar el emulador de almacenamiento Azurite para ejecutar y probar el código en un entorno local.If you prefer not to create a storage account in Azure at this time, you can also use the Azurite storage emulator to run and test your code in a local environment. Para más información, consulte Uso del emulador de Azurite para desarrollo y pruebas locales de Azure Storage.For more information, see Use the Azurite emulator for local Azure Storage development.

Configurado su entorno de desarrolloSet up your development environment

A continuación, configure el entorno de desarrollo en Visual Studio para poder probar los ejemplos de código de esta guía.Next, set up your development environment in Visual Studio so you're ready to try the code examples in this guide.

Creación de un proyecto de aplicación de consola de WindowsCreate a Windows console application project

En Visual Studio, cree una nueva aplicación de consola de Windows.In Visual Studio, create a new Windows console application. Los siguientes pasos muestran cómo crear una aplicación de consola en Visual Studio 2019.The following steps show you how to create a console application in Visual Studio 2019. Los pasos son similares en otras versiones de Visual Studio.The steps are similar in other versions of Visual Studio.

  1. Seleccione Archivo > Nuevo > ProyectoSelect File > New > Project
  2. Seleccione Plataforma > WindowsSelect Platform > Windows
  3. Seleccione Aplicación de consola (.NET Framework)Select Console App (.NET Framework)
  4. Seleccione Siguiente.Select Next
  5. Escriba el nombre de la aplicación en el campo Nombre del proyecto.In the Project name field, enter a name for your application
  6. Seleccione CrearSelect Create

Todos los ejemplos de código de este tutorial se pueden agregar al método Main() del archivo Program.cs de la aplicación de consola.All code examples in this tutorial can be added to the Main() method of your console application's Program.cs file.

Las bibliotecas cliente de Azure Storage se pueden usar en cualquier tipo de aplicación .NET, incluidos cualquier servicio en la nube o aplicación web de Azure y aplicaciones de escritorio o móviles.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. En esta guía, usamos una aplicación de consola para hacerlo más sencillo.In this guide, we use a console application for simplicity.

Uso de NuGet para instalar los paquetes necesariosUse NuGet to install the required packages

Para completar este tutorial, es preciso que haga referencia a los siguientes cuatro paquetes en el proyecto:You need to reference the following four packages in your project to complete this tutorial:

Puede usar NuGet para obtener estos paquetes.You can use NuGet to obtain these packages. Siga estos pasos:Follow these steps:

  1. Haga clic con el botón derecho en el proyecto, en el Explorador de soluciones, y elija Administrar paquetes NuGet.Right-click your project in Solution Explorer, and choose Manage NuGet Packages.
  2. Seleccione ExaminarSelect Browse
  3. Busque "Azure.Storage.Queues" en línea y seleccione Instalar para instalar la biblioteca cliente de Storage y sus dependencias.Search online for "Azure.Storage.Queues", and select Install to install the Storage client library and its dependencies. También se instalarán las bibliotecas Azure.Storage.Common y Azure.Core, que son dependencias de la biblioteca de colas.This will also install the Azure.Storage.Common and Azure.Core libraries, which are dependencies of the queue library.
  4. Busque "System.Configuration.ConfigurationManager" en línea y seleccione Instalar para instalar Configuration Manager.Search online for "System.Configuration.ConfigurationManager", and select Install to install the Configuration Manager.

Nota

El paquete de las bibliotecas cliente de Storage también se incluye en el SDK de Azure para .NET.The Storage client libraries packages are also included in the Azure SDK for .NET. Sin embargo, se recomienda que instale también las bibliotecas cliente de Storage desde NuGet para garantizar que siempre dispone de las versiones más recientes.However, we recommend that you also install the Storage client libraries from NuGet to ensure that you always have the latest versions.

Las dependencias de ODataLib en las bibliotecas cliente de Storage para .NET las resuelven los paquetes de ODataLib disponibles en NuGet, no WCF Data Services.The ODataLib dependencies in the Storage client libraries for .NET are resolved by the ODataLib packages available on NuGet, not from WCF Data Services. A través de NuGet, es posible descargar directamente las bibliotecas ODataLib o bien hacer referencia a ellas con el código del proyecto.The ODataLib libraries can be downloaded directly, or referenced by your code project through NuGet. Los paquetes de ODataLib específicos utilizados por las bibliotecas cliente de Storage son OData, Edm y Spatial.The specific ODataLib packages used by the Storage client libraries are OData, Edm, and Spatial. Aunque las clases de Azure Table Storage usan estas bibliotecas, son dependencias necesarias para programar con las bibliotecas cliente de Storage.While these libraries are used by the Azure Table storage classes, they are required dependencies for programming with the Storage client libraries.

Determine su entorno de destinoDetermine your target environment

Tiene dos opciones de entorno para ejecutar los ejemplos de esta guía:You have two environment options for running the examples in this guide:

  • Puede ejecutar el código en una cuenta de Azure Storage en la nube.You can run your code against an Azure Storage account in the cloud.
  • Puede ejecutar el código en el emulador de almacenamiento de Azurite.You can run your code against the Azurite storage emulator. Azurite es un entorno local que emula una cuenta de Azure Storage en la nube.Azurite is a local environment that emulates an Azure Storage account in the cloud. Azurite es una opción gratis para probar y depurar el código mientras la aplicación está en desarrollo.Azurite is a free option for testing and debugging your code while your application is under development. El emulador usa una cuenta y una clave conocidas.The emulator uses a well-known account and key. Para obtener más información, consulte Uso del emulador Azurite en la instancia local de Azure Storage para desarrollo y pruebas.For more information, see Use the Azurite emulator for local Azure Storage development and testing.

Nota

Puede dirigirse al emulador de almacenamiento para evitar incurrir en cualquier coste asociado con Azure Storage.You can target the storage emulator to avoid incurring any costs associated with Azure Storage. Sin embargo, si selecciona dirigirse a una cuenta de almacenamiento de Azure en la nube, los costes derivados de la realización de este tutorial serán insignificantes.However, if you do choose to target an Azure storage account in the cloud, costs for performing this tutorial will be negligible.

Obtención de la cadena de conexión de almacenamientoGet your storage connection string

Las bibliotecas cliente de Azure Storage para .NET admiten el uso de una cadena de conexión de almacenamiento para configurar puntos de conexión y credenciales a fin de acceder a los servicios de almacenamiento.The Azure Storage client libraries for .NET support using a storage connection string to configure endpoints and credentials for accessing storage services. Para más información, consulte Administración de las claves de acceso de la cuenta de almacenamiento.For more information, see Manage storage account access keys.

Copia de las credenciales desde Azure PortalCopy your credentials from the Azure portal

El código de ejemplo debe autorizar el acceso a su cuenta de almacenamiento.The sample code needs to authorize access to your storage account. Para realizar la autorización, proporcionará a la aplicación sus credenciales de cuenta de almacenamiento en forma de cadena de conexión.To authorize, you provide the application with your storage account credentials in the form of a connection string. Para ver las credenciales de la cuenta de almacenamiento:To view your storage account credentials:

  1. Acceda a Azure Portal.Navigate to the Azure portal.

  2. Busque su cuenta de almacenamiento.Locate your storage account.

  3. En la sección Configuración de la información general de la cuenta de almacenamiento, seleccione Claves de acceso.In the Settings section of the storage account overview, select Access keys. Aparecen las claves de acceso de la cuenta, así como la cadena de conexión completa de cada clave.Your account access keys appear, as well as the complete connection string for each key.

  4. Busque el valor de Cadena de conexión en key1y haga clic en el botón Copiar para copiar la cadena de conexión.Find the Connection string value under key1, and click the Copy button to copy the connection string. En el paso siguiente, agregará el valor de la cadena de conexión a una variable de entorno.You will add the connection string value to an environment variable in the next step.

    Captura de pantalla que muestra cómo copiar una cadena de conexión desde Azure Portal

Para más información acerca de las cadenas de conexión, consulte Configuración de una cadena de conexión a Azure Storage.For more information about connection strings, see Configure a connection string to Azure Storage.

Nota

La clave de la cuenta de almacenamiento es similar a la contraseña raíz de la cuenta de almacenamiento.Your storage account key is similar to the root password for your storage account. Siempre debe proteger la clave de la cuenta de almacenamiento.Always be careful to protect your storage account key. Evite distribuirla a otros usuarios, codificarla de forma rígida o guardarla en un archivo de texto que sea accesible a otros usuarios.Avoid distributing it to other users, hard-coding it, or saving it in a plain-text file that is accessible to others. Vuelva a generar la clave mediante Azure Portal si cree que puede verse comprometida.Regenerate your key by using the Azure portal if you believe it may have been compromised.

La mejor manera de conservar la cadena de conexión de almacenamiento es mediante un archivo de configuración.The best way to maintain your storage connection string is in a configuration file. Para configurar la cadena de conexión, abra el archivo app.config en el Explorador de soluciones de Visual Studio.To configure your connection string, open the app.config file from Solution Explorer in Visual Studio. Agregue el contenido del elemento \<appSettings\> , que se muestra a continuación.Add the contents of the \<appSettings\> element shown below. Reemplace la cadena de conexión con el valor que copió de la cuenta de almacenamiento en el portal: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>

Por ejemplo, el valor de configuración es similar a:For example, your configuration setting appears similar to:

<add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=storagesample;AccountKey=GMuzNHjlB3S9itqZJHHCnRkrokLkcSyW7yK9BRbGp0ENePunLPwBgpxV1Z/pVo9zpem/2xSHXkMqTHHLcx8XRA==EndpointSuffix=core.windows.net" />

Para elegir como destino el emulador de almacenamiento Azurite, puede utilizar un acceso directo que se asigna al nombre y la clave conocidas de la cuenta.To target the Azurite storage emulator, you can use a shortcut that maps to the well-known account name and key. En ese caso, la configuración de la cadena de conexión es:In that case, your connection string setting is:

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

Adición de directivas usingAdd using directives

Agregue las siguientes directivas using al principio del archivo 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

Creación del cliente del servicio ColaCreate the Queue service client

La clase QueueClient le permite recuperar las colas almacenadas en Queue Storage.The QueueClient class enables you to retrieve queues stored in Queue storage. Esta es una forma de crear el cliente de servicio: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");

Ahora ya puede escribir código que lee y escribe datos en el Almacenamiento en cola.Now you are ready to write code that reads data from and writes data to Queue storage.

Creación de una colaCreate a queue

En este ejemplo se muestra cómo crear una cola: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();

un mensaje en una colaInsert a message into a queue

Para insertar un mensaje en una cola existente, llame al método SendMessage.To insert a message into an existing queue, call the SendMessage method. Un mensaje puede ser un valor string (en formato UTF-8) o una matriz de byte.A message can be either a string (in UTF-8 format) or a byte array. En el código siguiente se crea una cola (si es que no existe) y se inserta un mensaje: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);
}

siguiente mensajePeek at the next message

Puede inspeccionar el mensaje de la cola sin tener que quitarlo de la misma, mediante una llamada al método PeekMessages.You can peek at the messages in the queue without removing them from the queue by calling the PeekMessages method. Si no pasa un valor para el parámetro maxMessages, el valor predeterminado es inspeccionar un mensaje.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}'");
}

contenido de un mensaje en colaChange the contents of a queued message

Puede cambiar el contenido de un mensaje local en la cola.You can change the contents of a message in-place in the queue. Si el mensaje representa una tarea de trabajo, puede usar esta característica para actualizar el estado de la tarea de trabajo.If the message represents a work task, you could use this feature to update the status of the work task. El siguiente código actualiza el mensaje de la cola con contenido nuevo y amplía el tiempo de espera de la visibilidad en 60 segundos más.The following code updates the queue message with new contents, and sets the visibility timeout to extend another 60 seconds. De este modo, se guarda el estado de trabajo asociado al mensaje y se le proporciona al cliente un minuto más para que siga elaborando el mensaje.This saves the state of work associated with the message, and gives the client another minute to continue working on the message. Esta técnica se puede utilizar para realizar un seguimiento de los flujos de trabajo de varios pasos en los mensajes en cola, sin que sea necesario volver a empezar desde el principio si se produce un error en un paso del proceso a causa de un error de hardware o software.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. Normalmente, también mantendría un número de reintentos y, si el mensaje se intentara más de n veces, lo eliminaría.Typically, you would keep a retry count as well, and if the message is retried more than n times, you would delete it. Esto proporciona protección frente a un mensaje que produce un error en la aplicación cada vez que se procesa.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
        );
}

siguiente mensaje de la colaDe-queue the next message

Quitar un mensaje de una cola en dos pasos.De-queue a message from a queue in two steps. Al llamar a ReceiveMessages, obtiene el siguiente mensaje de una cola.When you call ReceiveMessages, you get the next message in a queue. Un mensaje devuelto por ReceiveMessages se hace invisible a cualquier otro código de lectura de mensajes de esta cola.A message returned from ReceiveMessages becomes invisible to any other code reading messages from this queue. De forma predeterminada, este mensaje permanece invisible durante 30 segundos.By default, this message stays invisible for 30 seconds. Para acabar de quitar el mensaje de la cola, también debe llamar a DeleteMessage.To finish removing the message from the queue, you must also call DeleteMessage. Este proceso de extracción de un mensaje que consta de dos pasos garantiza que si su código no puede procesar un mensaje a causa de un error de hardware o software, otra instancia de su código puede obtener el mismo mensaje e intentarlo de nuevo.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. El código siguiente llama a DeleteMessage justo después de haberse procesado el mensaje.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);
}

Uso del patrón Async-Await con API comunes de almacenamiento de colasUse Async-Await pattern with common Queue storage APIs

En este ejemplo se muestra cómo usar el patrón Async-Await con API comunes de almacenamiento de colas.This example shows how to use the Async-Await pattern with common Queue storage APIs. El ejemplo llama a la versión asincrónica de cada uno de los métodos indicados, tal como se puede ver por el sufijo Async de cada método.The sample calls the asynchronous version of each of the given methods, as indicated by the Async suffix of each method. Cuando se utiliza un método asincrónico, el patrón Async-Await suspende la ejecución local hasta que se completa la llamada.When an async method is used, the async-await pattern suspends local execution until the call completes. Este comportamiento permite que el subproceso actual realice otro trabajo, lo que ayuda a evitar cuellos de botella en el rendimiento y mejora la capacidad de respuesta general de la aplicación.This behavior allows the current thread to do other work, which helps avoid performance bottlenecks and improves the overall responsiveness of your application. Para más información sobre el uso del patrón Async-Await en. NET, consulte Async y Await (C# y 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}'");

Uso de opciones adicionales para quitar mensajes de la colaLeverage additional options for de-queuing messages

Hay dos formas de personalizar la recuperación de mensajes de una cola.There are two ways you can customize message retrieval from a queue. En primer lugar, puede obtener un lote de mensajes (hasta 32).First, you can get a batch of messages (up to 32). En segundo lugar, puede establecer un tiempo de espera de la invisibilidad más largo o más corto para que el código disponga de más o menos tiempo para procesar cada mensaje.Second, you can set a longer or shorter invisibility timeout, allowing your code more or less time to fully process each message.

El siguiente ejemplo de código utiliza el método ReceiveMessages para obtener 20 mensajes en una llamada.The following code example uses the ReceiveMessages method to get 20 messages in one call. A continuación, procesa cada mensaje con un bucle foreach.Then it processes each message using a foreach loop. También establece el tiempo de espera de la invisibilidad en cinco minutos para cada mensaje.It also sets the invisibility timeout to five minutes for each message. Tenga en cuenta que los 5 minutos empiezan a contar para todos los mensajes al mismo tiempo, por lo que después de pasar los 5 minutos desde la llamada a ReceiveMessages, todos los mensajes que no se han eliminado volverán a estar 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);
    }
}

la longitud de la colaGet the queue length

Puede obtener una estimación del número de mensajes existentes en una cola.You can get an estimate of the number of messages in a queue. El método GetProperties solicita a Queue service la recuperación de las propiedades de la cola, incluido el número de mensajes.The GetProperties method asks the Queue service to retrieve the queue properties, including the message count. El método ApproximateMessagesCount obtiene el número aproximado de mensajes en la cola.The ApproximateMessagesCount property contains the approximate number of messages in the queue. Este número no es menor que el número real de mensajes de la cola, pero podría ser mayor.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}");
}

Eliminación de una colaDelete a queue

Para eliminar una cola y todos los mensajes contenidos en ella, llame al método Delete en el objeto de cola.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();
}

Pasos siguientesNext steps

Ahora que está familiarizado con los aspectos básicos del almacenamiento de colas, utilice estos vínculos para obtener más información acerca de tareas de almacenamiento más complejas.Now that you've learned the basics of Queue storage, follow these links to learn about more complex storage tasks.