Biblioteca de clientes de Filas de Armazenamento do Azure WebJobs para .NET – versão 5.2.0
Essa extensão fornece funcionalidade para acessar filas de armazenamento do Azure em Azure Functions.
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
Você precisa de uma assinatura do Azure e uma Conta de Armazenamento para usar esse pacote.
Para criar uma nova Conta de Armazenamento, você pode usar o Portal do Azure, Azure PowerShell ou a CLI do Azure. Aqui, está um exemplo usando 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 acesse Filas, você precisará da cadeia de conexão que pode ser encontrada no Portal do Azure ou usando o snippet da CLI do Azure abaixo.
az storage account show-connection-string -g <your-resource-group-name> -n <your-resource-name>
A cadeia de conexão pode ser fornecida por meio da configuração do aplicativo AzureWebJobsStorage.
Principais conceitos
Usando o gatilho Fila
O gatilho do 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 mais sobre como ouvir filas no Azure Functions.
Usando associação de fila
O Azure Functions pode criar novas mensagens de armazenamento de Fila do Azure configurando uma associação de saída.
Siga o tutorial de associação para saber mais sobre como usar essa extensão para produzir mensagens em filas no Azure Functions.
Exemplos
Escutando a fila
O conjunto de exemplos a seguir mostra como receber e reagir a mensagens que estão sendo adicionadas à fila.
Associar mensagem de fila à cadeia de caracteres
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);
}
}
Associar mensagem de fila 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());
}
}
Associar mensagem de fila 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());
}
}
Associar mensagem de fila ao 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);
}
}
Associar mensagem de fila 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"]);
}
}
Publicando mensagens na fila
O conjunto de exemplos a seguir mostra como adicionar mensagens à fila usando Queue
o atributo .
O QueueTrigger
é usado apenas para integridade de exemplo, ou seja, qualquer outro mecanismo de gatilho pode ser usado em vez disso.
Publicar mensagem como cadeia de caracteres
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;
}
}
Publicar mensagem 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;
}
}
Publicar mensagem 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 por meio 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 por meio do coletor
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);
}
}
Acessando 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);
}
}
Configuração da extensão
Consulte o aplicativo de funções de exemplo.
Solução de problemas
Consulte Monitorar Azure Functions para obter diretrizes de solução de problemas.
Próximas etapas
Leia a introdução ao Azure Function ou crie um guia de funções do Azure.
Participante
Consulte a CONTRIBUTING.md de Armazenamento para obter detalhes sobre como criar, testar e contribuir para essa biblioteca.
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um CLA (Contrato de Licença do Colaborador) declarando que você tem o direito de nos conceder, e de fato concede, os direitos de usar sua contribuição. Para obter detalhes, visite cla.microsoft.com.
Este projeto adotou o Código de Conduta de Software Livre da Microsoft. Para obter mais informações, confira as Perguntas frequentes sobre o Código de Conduta ou contate opencode@microsoft.com para enviar outras perguntas ou comentários.