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.

Wrażenia