Клиентская библиотека очередей хранилища веб-заданий Azure для .NET версии 5.1.1
Это расширение предоставляет функциональные возможности для доступа к очередям службы хранилища Azure в Функции Azure.
Начало работы
Установка пакета
Установите расширение очередей хранилища с помощью NuGet:
dotnet add package Azure.WebJobs.Extensions.Storage.Queues
Предварительные требования
Для использования этого пакета вам потребуется подписка Azure и учетная запись хранения .
Чтобы создать учетную запись хранения, можно использовать портал Azure, Azure PowerShell или Azure CLI. Ниже приведен пример с использованием Azure CLI:
az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS
Аутентификация клиента
Чтобы расширение пользовалось очередями, вам потребуется строка подключения, которую можно найти на портале Azure или с помощью приведенного ниже фрагмента кода Azure CLI .
az storage account show-connection-string -g <your-resource-group-name> -n <your-resource-name>
Строку подключения можно указать с помощью параметра приложения AzureWebJobsStorage.
Основные понятия
Использование триггера очереди
Триггер хранилища очередей запускает функцию при добавлении сообщений в хранилище очередей Azure.
Следуйте инструкциям в этом руководстве, чтобы узнать, как прослушивать очереди в Функции Azure.
Использование привязки очереди
Функции Azure могут создавать новые сообщения хранилища очередей Azure, настроив привязку для вывода.
Ознакомьтесь с руководством по привязкам, чтобы узнать об использовании этого расширения для создания сообщений в очередях в Функции Azure.
Примеры
Прослушивание очереди
В следующем наборе примеров показано, как получать сообщения, добавляемые в очередь, и реагировать на них.
Привязка сообщения очереди к строке
public static class QueueTriggerFunction_String
{
[FunctionName("QueueTriggerFunction")]
public static void Run(
[QueueTrigger("sample-queue")] string message,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue, content={content}", message);
}
}
Привязка сообщения очереди к BinaryData
public static class QueueTriggerFunction_BinaryData
{
[FunctionName("QueueTriggerFunction")]
public static void Run(
[QueueTrigger("sample-queue")] BinaryData message,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue, content={content}", message.ToString());
}
}
Привязка сообщения очереди к QueueMessage
public static class QueueTriggerFunction_QueueMessage
{
[FunctionName("QueueTriggerFunction")]
public static void Run(
[QueueTrigger("sample-queue")] QueueMessage message,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue, content={content}", message.Body.ToString());
}
}
Привязка сообщения очереди к пользовательскому типу
public static class QueueTriggerFunction_CustomObject
{
public class CustomMessage
{
public string Content { get; set; }
}
[FunctionName("QueueTriggerFunction")]
public static void Run(
[QueueTrigger("sample-queue")] CustomMessage message,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue, content={content}", message.Content);
}
}
Привязка сообщения очереди к JObject
public static class QueueTriggerFunction_JObject
{
[FunctionName("QueueTriggerFunction")]
public static void Run(
[QueueTrigger("sample-queue")] JObject message,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue, content={content}", message["content"]);
}
}
Публикация сообщений в очередь
В следующем наборе примеров показано, как добавлять сообщения в очередь с помощью Queue
атрибута .
QueueTrigger
используется только для полноты образца, т. е. вместо него можно использовать любой другой механизм триггера.
Публикация сообщения в виде строки
public static class QueueSenderFunction_String_Return
{
[FunctionName("QueueFunction")]
[return: Queue("sample-queue-2")]
public static string Run(
[QueueTrigger("sample-queue-1")] string message,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue-1, content={content}", message);
logger.LogInformation("Dispatching message to sample-queue-2");
return message;
}
}
Публикация сообщения как BinaryData
public static class QueueSenderFunction_BinaryData_Return
{
[FunctionName("QueueFunction")]
[return: Queue("sample-queue-2")]
public static BinaryData Run(
[QueueTrigger("sample-queue-1")] BinaryData message,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue-1, content={content}", message.ToString());
logger.LogInformation("Dispatching message to sample-queue-2");
return message;
}
}
Публикация сообщения как QueueMessage
public static class QueueSenderFunction_QueueMessage_Return
{
[FunctionName("QueueFunction")]
[return: Queue("sample-queue-2")]
public static QueueMessage Run(
[QueueTrigger("sample-queue-1")] QueueMessage message,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue-1, content={content}", message.Body.ToString());
logger.LogInformation("Dispatching message to sample-queue-2");
return message;
}
}
Публикация сообщения как пользовательского типа с помощью параметра out
public static class QueueSenderFunction_CustomObject_OutParamter
{
public class CustomMessage
{
public string Content { get; set; }
}
[FunctionName("QueueFunction")]
public static void Run(
[QueueTrigger("sample-queue-1")] CustomMessage incomingMessage,
[Queue("sample-queue-2")] out CustomMessage outgoingMessage,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue-1, content={content}", incomingMessage.Content);
logger.LogInformation("Dispatching message to sample-queue-2");
outgoingMessage = incomingMessage;
}
}
Публикация сообщения в качестве пользовательского типа через сборщик
public static class QueueSenderFunction_CustomObject_Collector
{
public class CustomMessage
{
public string Content { get; set; }
}
[FunctionName("QueueFunction")]
public static void Run(
[QueueTrigger("sample-queue-1")] CustomMessage incomingMessage,
[Queue("sample-queue-2")] ICollector<CustomMessage> collector,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue-1, content={content}", incomingMessage.Content);
logger.LogInformation("Dispatching message to sample-queue-2");
collector.Add(incomingMessage);
}
}
Доступ к свойствам очереди
public static class Function_BindingToQueueClient
{
[FunctionName("QueueFunction")]
public static async Task Run(
[QueueTrigger("sample-queue")] string message,
[Queue("sample-queue")] QueueClient queueClient,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue, content={content}", message);
QueueProperties queueProperties = await queueClient.GetPropertiesAsync();
logger.LogInformation("There are approximatelly {count} messages", queueProperties.ApproximateMessagesCount);
}
}
Настройка расширения
См. пример приложения-функции.
Устранение неполадок
Инструкции по устранению неполадок см. в статье Мониторинг Функции Azure.
Дальнейшие действия
Ознакомьтесь с введением в Функцию Azure или руководством по созданию функции Azure.
Участие
Дополнительные сведения о создании, тестировании и участии в этой библиотеке см. в CONTRIBUTING.md хранилища.
На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Дополнительные сведения см. на странице cla.microsoft.com.
В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе часто задаваемых вопросов о правилах поведения или обратитесь к opencode@microsoft.com с любыми дополнительными вопросами или комментариями.