Compartir a través de


Biblioteca cliente de Azure WebJobs Storage Queues para .NET: versión 5.2.0

Esta extensión proporciona funcionalidad para acceder a las colas de Azure Storage en Azure Functions.

Introducción

Instalar el paquete

Instale la extensión De colas de Storage con NuGet:

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

Requisitos previos

Necesita una suscripción de Azure y una cuenta de almacenamiento para usar este paquete.

Para crear una cuenta de almacenamiento, puede usar Azure Portal, Azure PowerShell o la CLI de Azure. A continuación se facilita un ejemplo mediante el uso de la CLI de Azure:

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

Autenticar el cliente

Para que la extensión acceda a Queues, necesitará la cadena de conexión que se puede encontrar en Azure Portal o mediante el siguiente fragmento de código de la CLI de Azure .

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

La cadena de conexión se puede proporcionar a través de la configuración de la aplicación AzureWebJobsStorage.

Conceptos clave

Uso del desencadenador de cola

El desencadenador de Queue Storage ejecuta una función a medida que se agregan mensajes a Azure Queue Storage.

Siga el tutorial para obtener información sobre cómo escuchar colas en Azure Functions.

Uso del enlace de cola

Azure Functions puede crear nuevos mensajes de Azure Queue Storage mediante la configuración de un enlace de salida.

Siga el tutorial de enlace para obtener información sobre el uso de esta extensión para generar mensajes en colas en Azure Functions.

Ejemplos

Escucha de cola

En el siguiente conjunto de ejemplos se muestra cómo recibir y reaccionar a los mensajes que se agregan a la cola.

Enlace de un mensaje de cola a una cadena

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

Enlace del mensaje de cola a 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());
    }
}

Enlace de un mensaje de cola a 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());
    }
}

Enlace del mensaje de cola al 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);
    }
}

Enlace del mensaje de cola a 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"]);
    }
}

Publicación de mensajes en cola

En el siguiente conjunto de ejemplos se muestra cómo agregar mensajes a la cola mediante Queue el atributo .

QueueTrigger Se usa solo para la integridad de la muestra, es decir, cualquier otro mecanismo de desencadenador se puede usar en su lugar.

Publicación del mensaje como cadena

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

Publicación del mensaje 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;
    }
}

Publicación de un mensaje 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;
    }
}

Publicación del mensaje como tipo personalizado a través del 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;
    }
}

Publicación del mensaje como tipo personalizado a través del recopilador

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

Acceso a las propiedades de la cola

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

Configuración de la extensión

Consulte la aplicación de funciones de ejemplo.

Solución de problemas

Consulte Monitor Azure Functions para obtener instrucciones de solución de problemas.

Pasos siguientes

Lea la introducción a La función de Azure o cree una guía de funciones de Azure.

Contribuciones

Consulte storage CONTRIBUTING.md para obtener más información sobre la compilación, las pruebas y la contribución a esta biblioteca.

Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución. Para más información, visite cla.microsoft.com.

Este proyecto ha adoptado el Código de conducta de Microsoft Open Source. Para más información, consulte las preguntas más frecuentes del código de conducta o póngase en contacto con opencode@microsoft.com si tiene cualquier otra pregunta o comentario.

Impresiones