Introdução ao armazenamento de Fila do Azure usando o .NETGet started with Azure Queue storage using .NET

Dica

Confira o repositório de exemplos de código do Armazenamento do AzureCheck out the Azure Storage code samples repository

Para exemplos de código fácil de usar ponta a ponta do Armazenamento do Azure que você pode baixar e executar, consulte nossa lista de Exemplos de Armazenamento do 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.

Visão geralOverview

O armazenamento de filas do Azure fornece mensagens na nuvem entre os componentes do aplicativo.Azure Queue storage provides cloud messaging between application components. Na criação de aplicativos para escala, os componentes do aplicativo geralmente são desassociados, para que possam ser redimensionados independentemente.In designing applications for scale, application components are often decoupled, so that they can scale independently. O armazenamento de filas fornece mensagens assíncronas para a comunicação entre os componentes do aplicativo, estando eles em execução na nuvem, na área de trabalho, em um servidor local ou em um dispositivo móvel.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. O armazenamento de Fila também dá suporte ao gerenciamento de tarefas assíncronas e à criação de fluxos de trabalho do processo.Queue storage also supports managing asynchronous tasks and building process work flows.

Sobre este tutorialAbout this tutorial

Este tutorial mostra como gravar código .NET para alguns cenários comuns usando o armazenamento de Fila do Azure.This tutorial shows how to write .NET code for some common scenarios using Azure Queue storage. Os cenários abordados incluem a criação e a exclusão de filas e a adição, a leitura e a exclusão de mensagens da fila.Scenarios covered include creating and deleting queues and adding, reading, and deleting queue messages.

Tempo estimado para conclusão: 45 minutosEstimated time to complete: 45 minutes

Pré-requisitosPrerequisites

O que é o armazenamento de filas?What is queue storage?

O armazenamento de filas do Azure é um serviço para armazenar grandes números de mensagens que podem ser acessadas de qualquer lugar do mundo por meio de chamadas autenticadas usando 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. Uma única mensagem de fila pode ter até 64 KB de tamanho e uma fila pode conter milhões de mensagens, até o limite de capacidade total de uma conta de armazenamento.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. O armazenamento de filas é geralmente usado para criar uma pendência de trabalho para processar de forma assíncrona.Queue storage is often used to create a backlog of work to process asynchronously.

Conceitos de serviço FilaQueue service concepts

O serviço Fila do Azure contém os seguintes componentes:The Azure Queue service contains the following components:

Componentes do serviço Fila do Azure

  • Formato da URL: as filas são acessadas usando o seguinte formato de URL: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>

    A URL a seguir endereça um fila no diagrama:The following URL addresses a queue in the diagram:

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

  • Conta de Armazenamento: todo o acesso ao Armazenamento do Azure é feito através de uma conta de armazenamento.Storage Account: All access to Azure Storage is done through a storage account. Consulte Escalabilidade e Metas de Desempenho do Armazenamento do Azure para obter detalhes sobre a capacidade da conta de armazenamento.See Azure Storage Scalability and Performance Targets for details about storage account capacity.

  • Fila: uma fila contém um conjunto de mensagens.Queue: A queue contains a set of messages. Todas as mensagens devem estar em uma fila.All messages must be in a queue. Observe que o nome da fila deve estar em letras minúsculas.Note that the queue name must be all lowercase. Para saber mais sobre filas de nomenclatura, confira Nomenclatura de filas e metadados.For information on naming queues, see Naming Queues and Metadata.

  • Mensagem: uma mensagem, em qualquer formato, de até 64 KB.Message: A message, in any format, of up to 64 KB. O tempo máximo que uma mensagem pode permanecer na fila é de 7 dias.The maximum time that a message can remain in the queue is 7 days.

Criar uma conta de armazenamento do AzureCreate an Azure storage account

A maneira mais fácil de criar sua primeira conta de armazenamento do Azure é usando o portal do Azure.The easiest way to create your first Azure storage account is by using the Azure portal. Para saber mais, consulte Criar uma conta de armazenamento.To learn more, see Create a storage account.

Você também pode criar uma conta de armazenamento do Azure usando o Azure PowerShell, a CLI do Azure ou o Provedor de Recursos de Armazenamento do Azure para .NET.You can also create an Azure storage account by using Azure PowerShell, Azure CLI, or the Azure Storage Resource Provider for .NET.

Se você preferir não criar uma conta de armazenamento no Azure no momento, também poderá usar o emulador de armazenamento do Azure para executar e testar seu código em um ambiente 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. Para saber mais, confira Usar o Emulador de Armazenamento do Azure para desenvolvimento e teste.For more information, see Use the Azure Storage Emulator for Development and Testing.

Configurar seu ambiente de desenvolvimentoSet up your development environment

Em seguida, configure seu ambiente de desenvolvimento no Visual Studio para poder ficar pronto para experimentar os exemplos de código neste guia.Next, set up your development environment in Visual Studio so you're ready to try the code examples in this guide.

Criar um projeto de aplicativo de console do Windows.Create a Windows console application project

No Visual Studio, crie um novo aplicativo de console do Windows.In Visual Studio, create a new Windows console application. As etapas a seguir mostram como criar um aplicativo de console no Visual Studio 2019.The following steps show you how to create a console application in Visual Studio 2019. As etapas são semelhantes em outras versões do Visual Studio.The steps are similar in other versions of Visual Studio.

  1. Selecione Arquivo > Novo > ProjetoSelect File > New > Project
  2. Selecionarjanelas de plataforma > Select Platform > Windows
  3. Selecione Aplicativo do Console (.NET Framework)Select Console App (.NET Framework)
  4. Selecione AvançarSelect Next
  5. No campo nome do projeto , insira um nome para seu aplicativoIn the Project name field, enter a name for your application
  6. Escolha CriarSelect Create

Todos os exemplos de código neste tutorial podem ser adicionados ao método Main () do arquivo Program.cs do seu aplicativo de console.All code examples in this tutorial can be added to the Main() method of your console application's Program.cs file.

Você pode usar as bibliotecas de cliente de armazenamento do Azure em qualquer tipo de aplicativo .NET, incluindo um serviço de nuvem do Azure ou aplicativo Web, e aplicativos móveis e de desktop.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. Neste guia, usamos um aplicativo de console para simplificar.In this guide, we use a console application for simplicity.

Use o NuGet para instalar os pacotes necessáriosUse NuGet to install the required packages

Você precisa fazer referência aos três pacotes a seguir em seu projeto para concluir este tutorial:You need to reference the following three packages in your project to complete this tutorial:

Você pode usar o NuGet para obter esses pacotes.You can use NuGet to obtain these packages. Siga estas etapas:Follow these steps:

  1. Clique com o botão direito do mouse no seu projeto no Gerenciador de Soluções e escolha Gerenciar Pacotes NuGet.Right-click your project in Solution Explorer, and choose Manage NuGet Packages.
  2. Selecione ProcurarSelect Browse
  3. Pesquise online "Microsoft. Azure. Storage. Queue" e selecione instalar para instalar a biblioteca de cliente de armazenamento e suas dependências.Search online for "Microsoft.Azure.Storage.Queue", and select Install to install the Storage client library and its dependencies. Isso também instalará a biblioteca Microsoft. Azure. Storage. Common, que é uma dependência da biblioteca de filas.This will also install the Microsoft.Azure.Storage.Common library, which is a dependency of the queue library.
  4. Pesquise online por "Microsoft. Azure. ConfigurationManager" e selecione instalar para instalar o Configuration Manager do Azure.Search online for "Microsoft.Azure.ConfigurationManager", and select Install to install the Azure Configuration Manager.

Observação

Os pacotes de bibliotecas de cliente de armazenamento também estão incluídos no SDK do Azure para .net.The Storage client libraries packages are also included in the Azure SDK for .NET. No entanto, recomendamos que você também instale as bibliotecas de cliente de armazenamento do NuGet para garantir que você sempre tenha as versões mais recentes.However, we recommend that you also install the Storage client libraries from NuGet to ensure that you always have the latest versions.

As dependências de ODataLib nas bibliotecas de cliente de armazenamento para .NET são resolvidas pelos pacotes ODataLib disponíveis no NuGet, não da 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. As bibliotecas do ODataLib podem ser baixadas diretamente ou referenciadas por seu projeto de código por meio do NuGet.The ODataLib libraries can be downloaded directly, or referenced by your code project through NuGet. Os pacotes ODataLib específicos usados pelas bibliotecas de cliente de armazenamento são OData, EDMe Spatial.The specific ODataLib packages used by the Storage client libraries are OData, Edm, and Spatial. Embora essas bibliotecas sejam usadas pelas classes de armazenamento de tabelas do Azure, elas são dependências necessárias para a programação com as bibliotecas de cliente de armazenamento.While these libraries are used by the Azure Table storage classes, they are required dependencies for programming with the Storage client libraries.

Determinar o ambiente de destinoDetermine your target environment

Você tem duas opções de ambiente para executar os exemplos neste guia:You have two environment options for running the examples in this guide:

  • Você pode executar o código em uma conta de Armazenamento do Azure na nuvem.You can run your code against an Azure Storage account in the cloud.
  • Você pode executar o código em um emulador de armazenamento do Azure.You can run your code against the Azure storage emulator. O emulador de armazenamento é um ambiente local que emula uma conta de Armazenamento do Azure na nuvem.The storage emulator is a local environment that emulates an Azure Storage account in the cloud. O emulador é uma opção gratuita para testar e depurar seu código enquanto o aplicativo está em desenvolvimento.The emulator is a free option for testing and debugging your code while your application is under development. O emulador usa uma conta e chave bem conhecidas.The emulator uses a well-known account and key. Para saber mais, confira Usar o emulador de armazenamento do Azure para desenvolvimento e teste.For more information, see Use the Azure storage emulator for development and testing.

Se você estiver selecionando uma conta de armazenamento na nuvem, copie a chave de acesso primário para sua conta de armazenamento a partir do portal do Azure.If you are targeting a storage account in the cloud, copy the primary access key for your storage account from the Azure portal. Para obter mais informações, confira Chaves de acesso.For more information, see Access keys.

Observação

Você pode utilizar o emulador de armazenamento como destino para evitar quaisquer custos associados ao Armazenamento do Azure.You can target the storage emulator to avoid incurring any costs associated with Azure Storage. Todavia, se você escolher utilizar como destino uma conta de armazenamento do Azure na nuvem, os custos para realização das operações neste tutorial serão insignificantes.However, if you do choose to target an Azure storage account in the cloud, costs for performing this tutorial will be negligible.

Configurar a cadeia de conexão de armazenamentoConfigure your storage connection string

As bibliotecas de cliente de armazenamento do Azure para .NET dão suporte ao uso de uma cadeia de conexão de armazenamento para configurar pontos de extremidade e credenciais para acessar serviços de armazenamento.The Azure Storage client libraries for .NET support using a storage connection string to configure endpoints and credentials for accessing storage services. A melhor maneira de manter a cadeia de conexão de armazenamento é em um arquivo de configuração.The best way to maintain your storage connection string is in a configuration file.

Para obter mais detalhes sobre as sequências de conexão, veja Configurar uma cadeia de conexão para o Armazenamento do Azure.For more information about connection strings, see Configure a connection string to Azure Storage.

Observação

Sua chave de conta de armazenamento é semelhante para a senha raiz da sua conta de armazenamento.Your storage account key is similar to the root password for your storage account. Sempre tenha cuidado para proteger a chave de sua conta de armazenamento.Always be careful to protect your storage account key. Evite distribuí-la a outros usuários, embuti-la no código ou salvá-lo em um arquivo de texto sem formatação que esteja acessível a outras pessoas.Avoid distributing it to other users, hard-coding it, or saving it in a plain-text file that is accessible to others. Regenere a chave usando o portal do Azure se você achar que ela pode ter sido comprometida.Regenerate your key by using the Azure portal if you believe it may have been compromised.

Para configurar a cadeia de conexão, abra o arquivo app. config de Gerenciador de soluções no Visual Studio.To configure your connection string, open the app.config file from Solution Explorer in Visual Studio. Adicione o conteúdo do <elemento appSettings> mostrado abaixo.Add the contents of the <appSettings> element shown below. Substitua Account-Name pelo nome da sua conta de armazenamento e da chave de conta pela chave de acesso da conta: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>

Por exemplo, a configuração é semelhante a:For example, your configuration setting appears similar to:

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

Para direcionar o emulador de armazenamento, você pode usar um atalho que mapeia para o nome de conta e chave bem conhecidos. Nesse caso, a configuração da cadeia de conexão é:In that case, your connection string setting is:

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

Adicionar diretivas usingAdd using directives

Adicione as seguintes diretivas using à parte superior do arquivo 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

Copiar suas credenciais no Portal do AzureCopy your credentials from the Azure portal

O código de exemplo precisa autorizar o acesso à sua conta de armazenamento.The sample code needs to authorize access to your storage account. Para autorizar, forneça suas credenciais de conta de armazenamento ao aplicativo na forma de uma cadeia de conexão.To authorize, you provide the application with your storage account credentials in the form of a connection string. Para verificar as credenciais da conta de armazenamento:To view your storage account credentials:

  1. Navegue até o Portal do Azure.Navigate to the Azure portal.

  2. Localize sua cadeia de conexão.Locate your storage account.

  3. Na seção Configurações da visão geral da conta de armazenamento, selecione Chaves de acesso.In the Settings section of the storage account overview, select Access keys. Suas chaves de acesso da conta são exibidas, bem como a cadeia de conexão completa para cada chave.Your account access keys appear, as well as the complete connection string for each key.

  4. Encontre o valor da Cadeia de conexão em key1 e clique no botão Copiar para copiar a cadeia de conexão.Find the Connection string value under key1, and click the Copy button to copy the connection string. Você adicionará o valor de cadeia de conexão para uma variável de ambiente na próxima etapa.You will add the connection string value to an environment variable in the next step.

    Captura de tela mostrando como copiar uma cadeia de conexão do portal do Azure

Analisar a cadeia de conexãoParse the connection string

A Biblioteca do Gerenciador de Configuração do Microsoft Azure para .NET fornece uma classe para analisar uma cadeia de conexão de um arquivo de configuração.The Microsoft Azure Configuration Manager Library for .NET provides a class for parsing a connection string from a configuration file. A classe CloudConfigurationManager analisa as definições de configuração.The CloudConfigurationManager class parses configuration settings. Ele analisa as configurações para aplicativos cliente que são executados na área de trabalho, em um dispositivo móvel, em uma máquina virtual do Azure ou em um serviço de nuvem do Azure.It parses settings for client applications that run on the desktop, on a mobile device, in an Azure virtual machine, or in an Azure cloud service.

Para fazer referência ao pacote CloudConfigurationManager, adicione as seguintes diretivas using:To reference the CloudConfigurationManager package, add the following using directives:

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

Aqui está um exemplo que mostra como recuperar uma cadeia de conexão de um arquivo de configuração: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"));

O uso do Gerenciador de Configurações do Azure é opcional.Using the Azure Configuration Manager is optional. Você também pode usar uma API como a classe ConfigurationManagerdo .NET Framework.You can also use an API such as the .NET Framework's ConfigurationManager Class.

Criar o cliente do serviço FilaCreate the Queue service client

A classe CloudQueueClient permite que você recupere as filas armazenadas no Armazenamento de filas.The CloudQueueClient class enables you to retrieve queues stored in Queue storage. Veja uma maneira de criar o cliente de serviço:Here's one way to create the service client:

CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

Agora você está pronto para escrever um código que lê e grava dados no Armazenamento de Filas.Now you are ready to write code that reads data from and writes data to Queue storage.

Criar uma filaCreate a queue

Este exemplo mostra como criar uma fila se ela ainda não existe: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();

Inserir uma mensagem em uma filaInsert a message into a queue

Para inserir uma mensagem em uma fila existente, primeiro crie uma nova CloudQueueMessage.To insert a message into an existing queue, first create a new CloudQueueMessage. Em seguida, chame o método AddMessage .Next, call the AddMessage method. Um CloudQueueMessage pode ser criado por meio de uma cadeia de caracteres (em formato UTF-8) ou de uma matriz de bytes.A CloudQueueMessage can be created from either a string (in UTF-8 format) or a byte array. Este é o código que cria uma fila (se ela não existir) e insere a mensagem '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);

Espiar a próxima mensagemPeek at the next message

Você pode inspecionar a mensagem na frente de uma fila sem removê-la da fila chamando o método 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);

Alterar o conteúdo de uma mensagem na filaChange the contents of a queued message

Você pode alterar o conteúdo de uma mensagem in-loco na fila.You can change the contents of a message in-place in the queue. Se a mensagem representar uma tarefa de trabalho, você poderá usar esse recurso para atualizar o status da tarefa de trabalho.If the message represents a work task, you could use this feature to update the status of the work task. O código a seguir atualiza a mensagem da fila com novo conteúdo e define o tempo limite de visibilidade para estender mais 60 segundos.The following code updates the queue message with new contents, and sets the visibility timeout to extend another 60 seconds. Isso salva o estado do trabalho associado à mensagem e dá ao cliente mais um minuto para continuar trabalhando na mensagem.This saves the state of work associated with the message, and gives the client another minute to continue working on the message. Você pode usar essa técnica para acompanhar fluxos de trabalho de várias etapas em mensagens em fila, sem a necessidade de começar desde o início, caso uma etapa de processamento falhar devido a uma falha de hardware ou de 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, você mantém uma contagem de repetições e, se a mensagem for repetida mais de n vezes, você a exclui.Typically, you would keep a retry count as well, and if the message is retried more than n times, you would delete it. Isso protege contra uma mensagem que dispara um erro do aplicativo sempre que for processada.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.SetMessageContent2("Updated contents.", false);
queue.UpdateMessage(message,
    TimeSpan.FromSeconds(60.0),  // Make it invisible for another 60 seconds.
    MessageUpdateFields.Content | MessageUpdateFields.Visibility);

Remover a próxima mensagem da filaDe-queue the next message

Seu código remove uma mensagem de um fila em duas etapas.Your code de-queues a message from a queue in two steps. Ao chamar GetMessage, você recebe a próxima mensagem em uma fila.When you call GetMessage, you get the next message in a queue. Uma mensagem retornada de GetMessage torna-se invisível para todas as outras mensagens de leitura de código da fila.A message returned from GetMessage becomes invisible to any other code reading messages from this queue. Por padrão, essa mensagem permanece invisível por 30 segundos.By default, this message stays invisible for 30 seconds. Para terminar de remover a mensagem da fila, você também deve chamar DeleteMessage.To finish removing the message from the queue, you must also call DeleteMessage. Este processo de duas etapas de remover uma mensagem garante que quando o código não processa uma mensagem devido à falhas de hardware ou de software, outra instância do seu código pode receber a mesma mensagem e tentar novamente.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. Seu código chama DeleteMessage logo depois que a mensagem é processada.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);

Usar padrão Async-Await com APIs comuns de armazenamento da filaUse Async-Await pattern with common Queue storage APIs

Este exemplo mostra como usar o padrão Async-Await com APIs de armazenamento da fila comuns.This example shows how to use the Async-Await pattern with common Queue storage APIs. O exemplo chama a versão assíncrona de cada um dos métodos determinados, conforme indicado pelo sufixo 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. Quando um método assíncrono é usado, o padrão async-await suspende a execução local até que a chamada seja concluída.When an async method is used, the async-await pattern suspends local execution until the call completes. Esse comportamento permite que o thread atual faça outro trabalho que ajude a evitar gargalos de desempenho e melhora a capacidade de resposta geral do aplicativo.This behavior allows the current thread to do other work, which helps avoid performance bottlenecks and improves the overall responsiveness of your application. Para obter mais detalhes sobre como usar o padrão Async-Await no .NET, confira Async e Await (C# e 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");

Aproveitar opções adicionais para remover mensagens da filaLeverage additional options for de-queuing messages

Há duas maneiras de personalizar a recuperação da mensagem de uma fila.There are two ways you can customize message retrieval from a queue. Primeiro, você pode obter um lote de mensagens (até 32).First, you can get a batch of messages (up to 32). Segundo, você pode definir um tempo limite de invisibilidade mais longo ou mais curto, permitindo mais ou menos tempo para seu código processar totalmente cada mensagem.Second, you can set a longer or shorter invisibility timeout, allowing your code more or less time to fully process each message. O exemplo de código a seguir usa o método GetMessages para receber 20 mensagens em uma chamada.The following code example uses the GetMessages method to get 20 messages in one call. Em seguida, ele processa cada mensagem usando um loop foreach .Then it processes each message using a foreach loop. Ele também define o tempo limite de invisibilidade de cinco minutos para cada mensagem.It also sets the invisibility timeout to five minutes for each message. Observe que os 5 minutos começam para todas as mensagens ao mesmo tempo; portanto, depois de 5 minutos desde a chamada para GetMessages, todas as mensagens que não tenham sido excluídas se tornarão visíveis novamente.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);
}

Obter o tamanho da filaGet the queue length

Você pode obter uma estimativa do número de mensagens em uma fila.You can get an estimate of the number of messages in a queue. O método FetchAttributes solicita que o serviço Fila recupere os atributos da fila, incluindo a contagem de mensagens.The FetchAttributes method asks the Queue service to retrieve the queue attributes, including the message count. A propriedade ApproximateMessageCount retorna o último valor recuperado pelo método FetchAttributes, sem chamar o serviço Fila.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);

Excluir uma filaDelete a queue

Para excluir uma fila e todas as mensagens que ela contém, chame o método Delete no objeto fila.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();

Próximas etapasNext steps

Agora que você aprendeu os conceitos básicos do armazenamento de Fila, siga estes links para saber mais sobre tarefas de armazenamento mais complexas.Now that you've learned the basics of Queue storage, follow these links to learn about more complex storage tasks.