Biblioteca de cliente de Filas de Armazenamento de WebJobs do Azure para .NET – versão 5.1.1

Esta extensão fornece funcionalidades para aceder às Filas de Armazenamento do Azure no Funções do Azure.

Introdução

Instalar o pacote

Instale a extensão Filas de Armazenamento com o NuGet:

dotnet add package Azure.WebJobs.Extensions.Storage.Queues

Pré-requisitos

Precisa de uma subscrição do Azure e de uma Conta de Armazenamento para utilizar este pacote.

Para criar uma nova Conta de Armazenamento, pode utilizar o Portal do Azure, o Azure PowerShell ou a CLI do Azure. Eis um exemplo com a CLI do Azure:

az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS

Autenticar o cliente

Para que a extensão aceda às Filas, precisará da cadeia de ligação que pode ser encontrada no portal do Azure ou através do fragmento da CLI do Azure abaixo.

az storage account show-connection-string -g <your-resource-group-name> -n <your-resource-name>

A cadeia de ligação pode ser fornecida através da definição da aplicação AzureWebJobsStorage.

Conceitos-chave

Utilizar o acionador Fila

O acionador de armazenamento de filas executa uma função à medida que as mensagens são adicionadas ao armazenamento de Filas do Azure.

Siga o tutorial para saber como ouvir filas no Funções do Azure.

Utilizar o Enlace de fila

Funções do Azure pode criar novas mensagens de armazenamento de Filas do Azure ao configurar um enlace de saída.

Siga o tutorial de enlace para saber como utilizar esta extensão para produzir mensagens em filas no Funções do Azure.

Exemplos

Ouvir a fila

O seguinte conjunto de exemplos mostra como receber e reagir a mensagens que estão a ser adicionadas à fila.

Enlace de mensagem de fila para cadeia

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);
    }
}

Mensagem de fila de enlace para 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());
    }
}

Mensagem de fila de enlace para 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());
    }
}

Mensagem de fila de enlace para o tipo personalizado

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);
    }
}

Mensagem de fila de enlace para 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"]);
    }
}

Publicar mensagens na fila

O seguinte conjunto de exemplos mostra como adicionar mensagens à fila com o Queue atributo .

O QueueTrigger é utilizado apenas para a conclusão da amostra, ou seja, qualquer outro mecanismo de acionador pode ser utilizado.

Mensagem de publicação como cadeia

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;
    }
}

Mensagem de publicação como 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;
    }
}

Mensagem de publicação como 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;
    }
}

Publicar mensagem como tipo personalizado através do parâmetro 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;
    }
}

Publicar mensagem como tipo personalizado através do recoletor

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);
    }
}

Aceder às propriedades da fila

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);
    }
}

Configurar a extensão

Veja a aplicação de funções de exemplo.

Resolução de problemas

Veja Monitorizar Funções do Azure para obter orientações de resolução de problemas.

Passos seguintes

Leia a introdução à Função do Azure ou ao criar um guia da Função do Azure.

Contribuir

Veja a CONTRIBUTING.md de Armazenamento para obter detalhes sobre como criar, testar e contribuir para esta biblioteca.

Agradecemos todas as contribuições e sugestões para este projeto. A maioria das contribuições requerem que celebre um Contrato de Licença de Contribuição (CLA) no qual se declare que tem o direito de conceder e que, na verdade, concede-nos os direitos para utilizar a sua contribuição. Para obter detalhes, visite cla.microsoft.com.

Este projeto adotou o Microsoft Open Source Code of Conduct (Código de Conduta do Microsoft Open Source). Para obter mais informações, consulte as FAQ do Código de Conduta ou contacte opencode@microsoft.com com quaisquer perguntas ou comentários adicionais.

Impressões