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.