(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo crear un Azure Function Queue-trigger en C#: paso a paso

João Barros 17 de September de 2026 4 min de lectura

Este tutorial muestra cómo crear una Azure Function con trigger para Azure Storage Queue en C# para procesar mensajes de forma asíncrona. Es útil para desacoplar componentes, gestionar picos de carga e integrar sistemas con fiabilidad.

Requisitos previos

  • Cuenta en Azure con permisos para crear recursos.
  • Azure CLI instalada y autenticada (az login).
  • Visual Studio Code o Visual Studio con .NET SDK 7+.
  • Azure Functions Core Tools (v4) para ejecutar localmente.
  • Extensión Azure Functions en VS Code (opcional).

Paso 1: Crear un Storage Account y una Queue

La Azure Function leerá mensajes de una Azure Storage Queue. Primero creamos el Storage Account y la Queue en el portal o vía CLI. Usamos la CLI porque es repetible y rápida.

az group create --name rg-func-queue --location westeurope
az storage account create --name funcqueuestorage$RANDOM --resource-group rg-func-queue --location westeurope --sku Standard_LRS --kind StorageV2
# Obter connection string
CONN=$(az storage account show-connection-string --name funcqueuestorage$RANDOM --resource-group rg-func-queue -o tsv)
# Criar a queue
az storage queue create --name myqueue --connection-string "$CONN"

Paso 2: Crear el proyecto Azure Functions en C#

Creamos un proyecto Functions con trigger Queue. Elegimos la plantilla QueueTrigger y el Binding para Storage Queue.

dotnet new console -n FuncQueueApp -o FuncQueueApp
cd FuncQueueApp
func init --worker-runtime dotnet
func new --template "Queue trigger" --name QueueProcessor

El fichero generado QueueProcessor.cs tiene un método Run que recibe string message y un ILogger. Vamos a ajustar la vinculación a la queue mediante application settings.

Paso 3: Configurar local.settings.json y la conexión al Storage

Localmente definimos AzureWebJobsStorage para apuntar al Storage Account. Esto permite probar la Function con la queue creada.

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=SEU_ACCOUNT;AccountKey=SEU_KEY;EndpointSuffix=core.windows.net",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"
  }
}

Reemplace SEU_ACCOUNT y SEU_KEY por los valores obtenidos con az storage account keys list o usando la connection string CONN del Paso 1.

Paso 4: Implementar la lógica de procesamiento

Editamos QueueProcessor.cs para procesar el mensaje. Mantenemos el ejemplo sencillo: deserializar JSON y registrar.

using System.Text.Json;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;

public class QueueProcessor
{
    [FunctionName("QueueProcessor")]
    public void Run([QueueTrigger("myqueue", Connection = "AzureWebJobsStorage")] string myQueueItem, ILogger log)
    {
        try
        {
            var obj = JsonSerializer.Deserialize(myQueueItem);
            log.LogInformation($"Processed message: {obj}");
            // TODO: adicionar lógica de negócio (base de dados, chamada HTTP, etc.)
        }
        catch (Exception ex)
        {
            log.LogError(ex, "Erro a processar mensagem");
            throw; // rethrow para deixar a mensagem ficar na queue ou ir para poison queue
        }
    }
}

Paso 5: Probar localmente

Ejecute la Function localmente y coloque un mensaje en la queue. Use Azure Storage Explorer o la CLI para encolar un mensaje JSON.

func start
# Noutra terminal, enviar mensagem
az storage message put --queue-name myqueue --content '{"id":1,"name":"teste"}' --connection-string "$CONN"

Compruebe los logs de func start para ver el mensaje siendo procesado.

Paso 6: Hacer deploy a Azure (Function App)

Crée una Function App en Azure y publique el código. Aquí usamos la CLI y el publish vía zip deploy con func.

az functionapp plan create --name plan-func --resource-group rg-func-queue --location westeurope --number-of-workers 1 --sku EP1
az functionapp create --resource-group rg-func-queue --consumption-plan-location westeurope --name myfuncqueueapp$RANDOM --storage-account funcqueuestorage$RANDOM --runtime dotnet
# Publicar
func azure functionapp publish myfuncqueueapp$RANDOM
# Definir setting AzureWebJobsStorage no Function App com a connection string
az functionapp config appsettings set --name myfuncqueueapp$RANDOM --resource-group rg-func-queue --settings AzureWebJobsStorage="$CONN"

Tras el publish la Function App estará leyendo mensajes de la queue en Azure.

Verificar el resultado

Para confirmar que todo está correcto, envíe un mensaje a la queue y vea los logs de la Function App. Use Azure Portal > Function App > Functions > QueueProcessor > Monitor para ver ejecuciones. Verifique también si no hay mensajes en la queue o si mensajes fallidos han ido a la poison queue (myqueue-poison).

Conclusión

Ahora tiene una Azure Function Queue-trigger en C# que procesa mensajes de Azure Storage Queue localmente y en Azure. Siguientes pasos: añadir retry/backoff, integrar con Azure Service Bus si necesita funcionalidades avanzadas, y crear pruebas automatizadas. Consejo: monitorice con Application Insights para diagnosticar problemas y errores comunes como connection string incorrecta o timeout de dependencias.