Приступая к работе с хранилищем очередей Azure с помощью .NETGet started with Azure Queue storage using .NET

Совет

См. примеры кода в репозитории службы хранилища AzureCheck out the Azure Storage code samples repository

Полные и простые в применении примеры кода для службы хранилища 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.

ОбзорOverview

Хранилище очередей Azure — это служба, обеспечивающая обмен сообщениями в облаке между компонентами приложения.Azure Queue storage provides cloud messaging between application components. При разработке приложений для масштабирования компоненты приложения часто не связаны между собой, так что они могут масштабироваться независимо друг от друга.In designing applications for scale, application components are often decoupled, so that they can scale independently. Хранилище очередей обеспечивает асинхронный обмен сообщениями для взаимодействия между компонентами приложения независимо от того, где они выполняются: в облаке, на рабочем столе, локальном сервере или мобильном устройстве.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. Хранилище очередей также поддерживает управление асинхронными задачами и создание рабочих процессов.Queue storage also supports managing asynchronous tasks and building process work flows.

О данном учебникеAbout this tutorial

В этом руководстве показано, как написать код .NET для некоторых распространенных сценариев использования хранилища очередей Azure.This tutorial shows how to write .NET code for some common scenarios using Azure Queue storage. Эти сценарии включают создание и удаление очередей, а также добавление, чтение и удаление сообщений.Scenarios covered include creating and deleting queues and adding, reading, and deleting queue messages.

Предполагаемое время выполнения: 45 минутEstimated time to complete: 45 minutes

предварительные требованияPrerequisites

Что такое хранилище очередей?What is queue storage?

Хранилище очередей Azure — это служба для хранения большого количества сообщений, к которым можно получить доступ практически из любой точки мира с помощью вызовов с проверкой подлинности по протоколам HTTP или 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. Одно сообщение очереди может быть размером до 64 КБ, а очередь может содержать миллионы сообщений до общего ограничения емкости учетной записи хранения.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 is often used to create a backlog of work to process asynchronously.

Основные понятия службы очередейQueue service concepts

Служба очередей Azure содержит следующие компоненты:The Azure Queue service contains the following components:

Компоненты служба очередей Azure

  • Формат URL-адреса. К очереди можно обратиться, используя следующий формат 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>

    Следующий URL-адрес позволяет обратиться к очереди на схеме:The following URL addresses a queue in the diagram:

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

  • Учетная запись хранения. Весь доступ к хранилищу Azure осуществляется с помощью учетной записи хранения.Storage Account: All access to Azure Storage is done through a storage account. Сведения об емкости учетной записи хранения см. в статье Целевые показатели масштабируемости и производительности службы хранилища Azure.See Azure Storage Scalability and Performance Targets for details about storage account capacity.

  • Очередь. Очередь содержит набор сообщений.Queue: A queue contains a set of messages. Все сообщения должны находиться в очереди.All messages must be in a queue. Обратите внимание: имя очереди должно содержать только строчные символы.Note that the queue name must be all lowercase. Дополнительные сведения см. в статье о присвоении имен очередям и метаданным.For information on naming queues, see Naming Queues and Metadata.

  • Сообщение. Сообщение в любом формате размером до 64 КБ.Message: A message, in any format, of up to 64 KB. Сообщение может оставаться в очереди не более 7 дней.The maximum time that a message can remain in the queue is 7 days.

Создание учетной записи хранения AzureCreate an Azure storage account

Самый простой способ создать первую учетную запись хранения Azure — воспользоваться порталом Azure.The easiest way to create your first Azure storage account is by using the Azure portal. Дополнительную информацию см. в статье Об учетных записях хранения Azure.To learn more, see Create a storage account.

Кроме того, создать учетную запись хранения Azure можно с помощью Azure PowerShell, Azure CLI или поставщика ресурсов службы хранилища Azure для .NET.You can also create an Azure storage account by using Azure PowerShell, Azure CLI, or the Azure Storage Resource Provider for .NET.

Если вы не хотите сейчас создавать учетную запись хранения в Azure, код можно запустить и протестировать в локальной среде с помощью эмулятора хранения Azure.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. Дополнительные сведения см. в статье Использование эмулятора хранения Azure для разработки и тестирования.For more information, see Use the Azure Storage Emulator for Development and Testing.

Настройка среды разработкиSet up your development environment

Теперь настройте среду разработки в Visual Studio для работы с примерами кода из этого руководства.Next, set up your development environment in Visual Studio so you're ready to try the code examples in this guide.

Создание нового проекта консольного приложения WindowsCreate a Windows console application project

В Visual Studio создайте новое консольное приложение Windows.In Visual Studio, create a new Windows console application. Ниже показано, как создать консольное приложение в Visual Studio 2019.The following steps show you how to create a console application in Visual Studio 2019. Эти же действия можно выполнить и в других версиях Visual Studio.The steps are similar in other versions of Visual Studio.

  1. Выберите Файл > Создать > Проект.Select File > New > Project
  2. Выбор платформ > WindowsSelect Platform > Windows
  3. Выберите Консольное приложение (.NET Framework) .Select Console App (.NET Framework)
  4. Щелкните Далее.Select Next
  5. В поле имя проекта введите имя приложения.In the Project name field, enter a name for your application
  6. Нажмите кнопку СоздатьSelect Create

Все примеры кода в этом учебнике можно добавить в метод Main () файла Program.CS консольного приложения.All code examples in this tutorial can be added to the Main() method of your console application's Program.cs file.

Клиентские библиотеки службы хранилища Azure можно использовать в любом типе приложения .NET, включая облачную службу или веб-приложение Azure, а также настольные и мобильные приложения.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. Для упрощения в этом руководстве мы будем использовать консольное приложение.In this guide, we use a console application for simplicity.

Установка необходимых пакетов с помощью NuGetUse NuGet to install the required packages

Чтобы завершить работу с этим руководством, необходимо сослаться на следующие три пакета в проекте:You need to reference the following three packages in your project to complete this tutorial:

Для получения этих пакетов можно использовать NuGet.You can use NuGet to obtain these packages. Выполните следующие действия.Follow these steps:

  1. Щелкните правой кнопкой мыши проект в обозревателе решений и выберите Управление пакетами NuGet.Right-click your project in Solution Explorer, and choose Manage NuGet Packages.
  2. Щелкните Обзор.Select Browse
  3. Выполните поиск по запросу "Microsoft. Azure. Storage. Queue" в Интернете и выберите установить , чтобы установить клиентскую библиотеку хранилища и ее зависимости.Search online for "Microsoft.Azure.Storage.Queue", and select Install to install the Storage client library and its dependencies. Кроме того, будет установлена библиотека Microsoft. Azure. Storage. Common, которая является зависимостью библиотеки очередей.This will also install the Microsoft.Azure.Storage.Common library, which is a dependency of the queue library.
  4. Выполните поиск по запросу "Microsoft. Azure. ConfigurationManager" в Интернете и выберите установить , чтобы установить Configuration Manager Azure.Search online for "Microsoft.Azure.ConfigurationManager", and select Install to install the Azure Configuration Manager.

Примечание

Пакеты клиентских библиотек хранилища также входят в пакет Azure SDK для .NET.The Storage client libraries packages are also included in the Azure SDK for .NET. Однако рекомендуется также установить клиентские библиотеки хранилища из NuGet, чтобы обеспечить постоянное наличие последних версий.However, we recommend that you also install the Storage client libraries from NuGet to ensure that you always have the latest versions.

Зависимости ODataLib в клиентских библиотеках хранилища для .NET разрешаются с помощью пакетов ODataLib, доступных в NuGet, а не 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. Библиотеки ODataLib можно скачать напрямую или указать на них ссылку в проекте через NuGet.The ODataLib libraries can be downloaded directly, or referenced by your code project through NuGet. Конкретные пакеты ODataLib, используемые клиентскими библиотеками хранилища, — это OData, EDMи spatial.The specific ODataLib packages used by the Storage client libraries are OData, Edm, and Spatial. Хотя эти библиотеки используются классами хранилища таблиц Azure, они являются обязательными зависимостями для программирования с помощью клиентских библиотек хранилища.While these libraries are used by the Azure Table storage classes, they are required dependencies for programming with the Storage client libraries.

Определение целевой средыDetermine your target environment

Примеры из этого руководства можно выполнять в двух средах.You have two environment options for running the examples in this guide:

  • Вы можете выполнить код в учетной записи хранения Azure в облаке.You can run your code against an Azure Storage account in the cloud.
  • Вы можете выполнить код в эмуляторе хранения Azure.You can run your code against the Azure storage emulator. Эмулятор хранения — это локальная среда, эмулирующая учетную запись хранения Azure в облаке.The storage emulator is a local environment that emulates an Azure Storage account in the cloud. Эмулятор можно использовать как бесплатный вариант для тестирования и отладки кода, пока приложение находится на стадии разработки.The emulator is a free option for testing and debugging your code while your application is under development. Эмулятор использует известную учетную запись и ключ.The emulator uses a well-known account and key. Дополнительные сведения см. в руководстве по использованию эмулятора хранения Azure для разработки и тестирования.For more information, see Use the Azure storage emulator for development and testing.

Выбрав учетную запись хранения в облаке, скопируйте первичный ключ доступа к этой учетной записи хранения с портала Azure.If you are targeting a storage account in the cloud, copy the primary access key for your storage account from the Azure portal. Дополнительные сведения см. в разделе о ключах доступа.For more information, see Access keys.

Примечание

Вы можете указать эмулятор хранения, чтобы избежать затрат, связанных с хранилищем Azure.You can target the storage emulator to avoid incurring any costs associated with Azure Storage. Однако если вы выберете учетную запись хранения Azure в облаке, затраты на выполнение заданий в учебнике будут незначительны.However, if you do choose to target an Azure storage account in the cloud, costs for performing this tutorial will be negligible.

Настройка строки подключения хранилищаConfigure your storage connection string

Клиентские библиотеки службы хранилища Azure для .NET поддерживают использование строки подключения к хранилищу для настройки конечных точек и учетных данных для доступа к службам хранилища.The Azure Storage client libraries for .NET support using a storage connection string to configure endpoints and credentials for accessing storage services. Строку подключения хранилища рекомендуется хранить в файле конфигурации.The best way to maintain your storage connection string is in a configuration file.

Дополнительные сведения о строках подключения см. в руководстве по настройке строк подключения службы хранилища Azure.For more information about connection strings, see Configure a connection string to Azure Storage.

Примечание

Ключ учетной записи хранения похож на корневой пароль для вашей учетной записи хранения.Your storage account key is similar to the root password for your storage account. Не забудьте защитить ключ учетной записи хранения.Always be careful to protect your storage account key. Не сообщайте его другим пользователям, не определяйте его в коде и не храните его в текстовом файле, доступном другим пользователям.Avoid distributing it to other users, hard-coding it, or saving it in a plain-text file that is accessible to others. Повторно создайте ключ с помощью портала Azure, если вы считаете, что он мог быть скомпрометирован.Regenerate your key by using the Azure portal if you believe it may have been compromised.

Чтобы настроить строку подключения, откройте файл app. config в Обозреватель решений в Visual Studio.To configure your connection string, open the app.config file from Solution Explorer in Visual Studio. Добавьте содержимое <элемента appSettings> , показанного ниже.Add the contents of the <appSettings> element shown below. В поле имя учетной записи введите имя учетной записи хранения и ключ учетной записи с ключом доступа к учетной записи: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>

Например, параметр конфигурации может быть приблизительно таким:For example, your configuration setting appears similar to:

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

Чтобы указать эмулятор хранения, можно использовать ярлык, который сопоставляется с хорошо известным именем и ключом. В этом случае параметр строки подключения будет таким:In that case, your connection string setting is:

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

Добавление директив usingAdd using directives

Добавьте в верхнюю часть файла Program.cs следующие директивы using: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

Копирование учетных данных с портала AzureCopy your credentials from the Azure portal

Чтобы использовать пример кода, вам нужно авторизоваться для получения доступа к своей учетной записи хранения.The sample code needs to authorize access to your storage account. Для этого предоставьте приложению учетные данные учетной записи хранения в виде строки подключения.To authorize, you provide the application with your storage account credentials in the form of a connection string. Просмотр учетных данных учетной записи хранения:To view your storage account credentials:

  1. Перейдите на портал Azure.Navigate to the Azure portal.

  2. Перейдите к учетной записи хранения.Locate your storage account.

  3. В разделе Параметры учетной записи хранения выберите параметр Ключи доступа.In the Settings section of the storage account overview, select Access keys. Появятся ключи доступа к учетной записи и полная строка подключения для каждого ключа.Your account access keys appear, as well as the complete connection string for each key.

  4. Найдите значение Строка подключения в разделе key1 и нажмите кнопку Скопировать, чтобы скопировать строку подключения.Find the Connection string value under key1, and click the Copy button to copy the connection string. На следующем этапе вы добавите значение строки подключения в переменную среды.You will add the connection string value to an environment variable in the next step.

    Снимок экрана, на котором показано, как скопировать строку подключения с портала Azure

Проанализируйте строку подключенияParse the connection string

Библиотека Microsoft Azure Configuration Manager для .NET содержит класс для анализа строки подключения из файла конфигурации.The Microsoft Azure Configuration Manager Library for .NET provides a class for parsing a connection string from a configuration file. Класс CloudConfigurationManager анализирует параметры конфигурации.The CloudConfigurationManager class parses configuration settings. Он анализирует параметры клиентских приложений, которые выполняются на рабочем столе, на мобильном устройстве, в виртуальной машине Azure или в облачной службе 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.

Чтобы создать ссылку на пакет CloudConfigurationManager, добавьте следующие директивы using:To reference the CloudConfigurationManager package, add the following using directives:

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

Ниже приведен пример, в котором показано получение строки подключения из файла конфигурации.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"));

Использование диспетчера конфигураций Azure не является обязательным.Using the Azure Configuration Manager is optional. Вы также можете использовать API, например класс ConfigurationManager.NET Framework.You can also use an API such as the .NET Framework's ConfigurationManager Class.

Создание клиента службы очередейCreate the Queue service client

Класс CloudQueueClient позволяет получать очереди, хранящиеся в хранилище очередей.The CloudQueueClient class enables you to retrieve queues stored in Queue storage. Вот один из способов создать клиента службы.Here's one way to create the service client:

CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

Теперь вы можете написать код, который считывает и записывает данные в хранилище очередей.Now you are ready to write code that reads data from and writes data to Queue storage.

Создать очередьCreate a queue

В этом примере показано, как создать очередь, если она не существует: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();

Вставка сообщения в очередьInsert a message into a queue

Чтобы вставить сообщение в существующую очередь, сначала создайте новый объект CloudQueueMessage.To insert a message into an existing queue, first create a new CloudQueueMessage. Затем вызовите метод AddMessage.Next, call the AddMessage method. Для создания объекта CloudQueueMessage можно использовать строку (в формате UTF-8) или массив байтов.A CloudQueueMessage can be created from either a string (in UTF-8 format) or a byte array. Ниже приведен код, который создает очередь (если она отсутствует) и вставляет сообщение "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);

Просмотр следующего сообщенияPeek at the next message

Просмотреть сообщение в начале очереди, не удаляя его, можно с помощью метода 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);

Изменение содержимого сообщения в очередиChange the contents of a queued message

Вы можете изменить содержимое сообщения непосредственно в очереди.You can change the contents of a message in-place in the queue. Если сообщение представляет собой рабочую задачу, можно использовать эту функцию для обновления состояния рабочей задачи.If the message represents a work task, you could use this feature to update the status of the work task. Следующий код добавляет новое содержимое в очередь сообщений и продлевает время ожидания видимости еще на 60 секунд.The following code updates the queue message with new contents, and sets the visibility timeout to extend another 60 seconds. Это сохраняет состояние работы, связанной с данным сообщением, и позволяет клиенту продолжить работу с сообщением на протяжении еще одной минуты.This saves the state of work associated with the message, and gives the client another minute to continue working on the message. Этот метод можно использовать для отслеживания многошаговых рабочих процессов по сообщениям в очереди без необходимости начинать с самого начала в случае сбоя шага обработки в связи с ошибкой аппаратного или программного обеспечения.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. Обычно также сохраняется счетчик повторов. Если количество повторов сообщения превысит n раз, его нужно удалить.Typically, you would keep a retry count as well, and if the message is retried more than n times, you would delete it. Это обеспечивает защиту от сообщений, которые инициируют ошибку приложения при каждой попытке обработки.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);

Удаление следующего сообщения из очередиDe-queue the next message

Код удаляет сообщение из очереди в два этапа.Your code de-queues a message from a queue in two steps. При вызове метода GetMessageвы получаете следующее сообщение в очереди.When you call GetMessage, you get the next message in a queue. Сообщение, возвращаемое методом GetMessage , становится невидимым для другого кода, считывающего сообщения из этой очереди.A message returned from GetMessage becomes invisible to any other code reading messages from this queue. По умолчанию это сообщение остается невидимым в течение 30 секунд.By default, this message stays invisible for 30 seconds. Чтобы завершить удаление сообщения из очереди, необходимо также вызвать метод DeleteMessage.To finish removing the message from the queue, you must also call DeleteMessage. Этот двухэтапный процесс удаления сообщения позволяет удостовериться, что если коду не удастся обработать сообщение из-за сбоя оборудования или программного обеспечения, другой экземпляр кода сможет получить то же сообщение и повторить попытку.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. Код вызывает метод DeleteMessage сразу после обработки сообщения.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);

Использование алгоритма Async-Await со стандартными интерфейсами API хранилища очередейUse Async-Await pattern with common Queue storage APIs

В этом примере показано использование алгоритма Async-Await со стандартными интерфейсами API хранилища очередей.This example shows how to use the Async-Await pattern with common Queue storage APIs. Вызывается асинхронная версия каждого из методов, на что указывает суффикс Async в их названиях.The sample calls the asynchronous version of each of the given methods, as indicated by the Async suffix of each method. При использовании асинхронного метода алгоритм Async-Await приостанавливает локальное выполнение процесса до завершения вызова.When an async method is used, the async-await pattern suspends local execution until the call completes. Благодаря этому текущий поток может выполнять другие задачи, что позволяет избежать возникновения узких мест и повысить общую скорость реагирования приложения.This behavior allows the current thread to do other work, which helps avoid performance bottlenecks and improves the overall responsiveness of your application. Дополнительные сведения об использовании алгоритма Async-Await в .NET см. в статье Асинхронное программирование с использованием ключевых слов Async и Await (C# и 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");

Дополнительные параметры для удаления сообщений из очередиLeverage additional options for de-queuing messages

Способ извлечения сообщения из очереди можно настроить двумя способами.There are two ways you can customize message retrieval from a queue. Во-первых, можно получить пакет сообщений (до 32 сообщений).First, you can get a batch of messages (up to 32). Во-вторых, можно задать более длительное или короткое время ожидания видимости, чтобы предоставить коду больше или меньше времени на полную обработку каждого сообщения.Second, you can set a longer or shorter invisibility timeout, allowing your code more or less time to fully process each message. В следующем примере кода метод GetMessages используется для получения 20 сообщений в одном вызове.The following code example uses the GetMessages method to get 20 messages in one call. Затем он обрабатывает каждое сообщение с помощью цикла foreach .Then it processes each message using a foreach loop. Он также задает время ожидания невидимости 5 минут для каждого сообщения.It also sets the invisibility timeout to five minutes for each message. Обратите внимание на то, что пятиминутный период начинается для всех сообщений одновременно, поэтому по прошествии пяти минут с момента вызова GetMessagesвсе сообщения, которые не были удалены, снова становятся видимыми.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);
}

Получение длины очередиGet the queue length

Вы можете узнать приблизительное количество сообщений в очереди.You can get an estimate of the number of messages in a queue. Метод FetchAttributes отправляет в службу очередей запрос на извлечение атрибутов очереди, включая количество сообщений.The FetchAttributes method asks the Queue service to retrieve the queue attributes, including the message count. Свойство ApproximateMessageCount возвращает последнее значение, полученное с использованием метода FetchAttributes, без обращения к службе очередей.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);

Удаление очередиDelete a queue

Чтобы удалить очередь и все сообщения в ней, вызовите метод Delete для объекта очереди.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();

Следующие шагиNext steps

Вы изучили основные сведения о хранилище очередей. Дополнительные сведения о более сложных задачах по использованию хранилища можно найти по следующим ссылкам.Now that you've learned the basics of Queue storage, follow these links to learn about more complex storage tasks.