Biblioteka klienta usługi Azure WebJobs Storage Queues dla platformy .NET — wersja 5.1.1
To rozszerzenie zapewnia funkcje uzyskiwania dostępu do kolejek usługi Azure Storage w Azure Functions.
Wprowadzenie
Instalowanie pakietu
Zainstaluj rozszerzenie Kolejki magazynu za pomocą narzędzia NuGet:
dotnet add package Azure.WebJobs.Extensions.Storage.Queues
Wymagania wstępne
Do korzystania z tego pakietu potrzebna jest subskrypcja platformy Azure i konto magazynu .
Aby utworzyć nowe konto magazynu, możesz użyć witryny Azure Portal, Azure PowerShell lub interfejsu wiersza polecenia platformy Azure. Oto przykład użycia interfejsu wiersza polecenia platformy Azure:
az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS
Uwierzytelnianie klienta
Aby rozszerzenie uzyskiwało dostęp do kolejek, potrzebne będą parametry połączenia, które można znaleźć w witrynie Azure Portal lub przy użyciu poniższego fragmentu wiersza polecenia platformy Azure .
az storage account show-connection-string -g <your-resource-group-name> -n <your-resource-name>
Parametry połączenia można dostarczyć za pomocą ustawienia aplikacji AzureWebJobsStorage.
Kluczowe pojęcia
Korzystanie z wyzwalacza kolejki
Wyzwalacz magazynu kolejek uruchamia funkcję, ponieważ komunikaty są dodawane do usługi Azure Queue Storage.
Postępuj zgodnie z samouczkiem, aby dowiedzieć się, jak nasłuchiwać kolejek w Azure Functions.
Korzystanie z powiązania kolejki
Azure Functions można tworzyć nowe komunikaty usługi Azure Queue Storage, konfigurując powiązanie wyjściowe.
Postępuj zgodnie z samouczkiem dotyczącym powiązania, aby dowiedzieć się więcej o używaniu tego rozszerzenia do tworzenia komunikatów w kolejkach w Azure Functions.
Przykłady
Nasłuchiwanie w kolejce
Poniższy zestaw przykładów pokazuje, jak odbierać komunikaty dodawane do kolejki i reagować na nie.
Wiązanie komunikatu kolejki z ciągiem
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);
}
}
Wiązanie komunikatu kolejki z danymi binarnymi
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());
}
}
Wiązanie komunikatu kolejki z komunikatem 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());
}
}
Wiązanie komunikatu kolejki z typem niestandardowym
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);
}
}
Wiązanie komunikatu kolejki z obiektem 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"]);
}
}
Publikowanie komunikatów w kolejce
Poniższy zestaw przykładów przedstawia sposób dodawania komunikatów do kolejki przy użyciu Queue
atrybutu .
Element QueueTrigger
jest używany tylko na potrzeby kompletności próbki, tj. zamiast tego można użyć dowolnego innego mechanizmu wyzwalacza.
Publikowanie komunikatu jako ciągu
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;
}
}
Publikowanie komunikatu jako 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;
}
}
Publikowanie komunikatu jako 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;
}
}
Publikowanie komunikatu jako typu niestandardowego za pośrednictwem parametru 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;
}
}
Publikowanie komunikatu jako typu niestandardowego za pośrednictwem modułu zbierającego
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);
}
}
Uzyskiwanie dostępu do właściwości kolejki
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);
}
}
Konfigurowanie rozszerzenia
Zapoznaj się z przykładową aplikacją funkcji.
Rozwiązywanie problemów
Aby uzyskać wskazówki dotyczące rozwiązywania problemów, zapoznaj się z artykułem Monitorowanie Azure Functions.
Następne kroki
Przeczytaj wprowadzenie do funkcji platformy Azure lub przewodnik po tworzeniu funkcji platformy Azure.
Współtworzenie
Zobacz CONTRIBUTING.md Storage , aby uzyskać szczegółowe informacje na temat kompilowania, testowania i współtworzenia tej biblioteki.
W tym projekcie zachęcamy do współtworzenia i zgłaszania sugestii. Współtworzenie w większości przypadków wymaga zgody na umowę licencyjną dotyczącą współautorów (CLA, Contributor License Agreement), zgodnie z którą współautor ma prawo udzielić i faktycznie udziela nam praw do używania wytworzonej przez siebie zawartości. Aby uzyskać szczegółowe informacje, odwiedź cla.microsoft.com.
W tym projekcie przyjęto Kodeks postępowania oprogramowania Open Source firmy Microsoft. Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące kodeksu postępowania lub skontaktuj się z opencode@microsoft.com dodatkowymi pytaniami lub komentarzami.