Omówienie wyzwalacza i powiązań usługi Azure Queue Storage dla Azure Functions

Azure Functions można uruchamiać jako tworzone są nowe komunikaty usługi Azure Queue Storage i mogą zapisywać komunikaty w kolejce w ramach funkcji.

Akcja Typ
Uruchamianie funkcji jako zmiany danych magazynu kolejek Wyzwalacz
Zapisywanie komunikatów magazynu kolejek Powiązanie wyjściowe

Instalowanie rozszerzenia

Instalowany pakiet NuGet rozszerzenia zależy od trybu języka C# używanego w aplikacji funkcji:

Funkcje są wykonywane w tym samym procesie co host usługi Functions. Aby dowiedzieć się więcej, zobacz Tworzenie funkcji biblioteki klas języka C# przy użyciu Azure Functions.

W odmianie tego modelu funkcje można uruchamiać przy użyciu skryptów języka C#, które są obsługiwane głównie w przypadku edytowania portalu C#. Aby zaktualizować istniejące rozszerzenia powiązań dla aplikacji skryptów języka C# działających w portalu bez konieczności ponownego publikowania aplikacji funkcji, zobacz Aktualizowanie rozszerzeń.

Funkcjonalność rozszerzenia różni się w zależności od wersji rozszerzenia:

W tej sekcji opisano używanie biblioteki klas. W przypadku skryptów języka C# należy zamiast tego zainstalować pakiet rozszerzeń w wersji 4.x.

Ta wersja wprowadza możliwość nawiązywania połączenia przy użyciu tożsamości zamiast wpisu tajnego. Aby zapoznać się z samouczkiem dotyczącym konfigurowania aplikacji funkcji przy użyciu tożsamości zarządzanych, zobacz samouczek dotyczący tworzenia aplikacji funkcji z połączeniami opartymi na tożsamościach.

Ta wersja umożliwia powiązanie z typami z elementu Azure.Storage.Queues.

To rozszerzenie jest dostępne przez zainstalowanie pakietu NuGet Microsoft.Azure.WebJobs.Extensions.Storage.Queues w wersji 5.x.

Korzystanie z interfejsu wiersza polecenia platformy .NET:

dotnet add package Microsoft.Azure.WebJobs.Extensions.Storage.Queues --version 5.0.0

Uwaga

Obiekty blob platformy Azure, kolejki platformy Azure i tabele platformy Azure używają teraz oddzielnych rozszerzeń i są przywołyane indywidualnie. Aby na przykład użyć wyzwalaczy i powiązań dla wszystkich trzech usług w aplikacji przetwarzania platformy .NET, należy dodać następujące pakiety do projektu:

Wcześniej rozszerzenia dostarczane razem jako Microsoft.Azure.WebJobs.Extensions.Storage w wersji 4.x. Ten sam pakiet ma również wersję 5.x, która odwołuje się tylko do podzielonych pakietów dla obiektów blob i kolejek. W przypadku uaktualniania odwołań do pakietu ze starszych wersji może być konieczne dodatkowe odwołanie do nowego pakietu NuGet Microsoft.Azure.WebJobs.Extensions.Tables . Ponadto podczas odwoływania się do tych nowszych pakietów podzielonych upewnij się, że nie odwołujesz się do starszej wersji połączonego pakietu magazynu, ponieważ spowoduje to konflikty z dwiema definicjami tych samych powiązań.

Instalowanie pakietu

Powiązanie usługi Blob Storage jest częścią pakietu rozszerzenia określonego w pliku projektu host.json. Może być konieczne zmodyfikowanie tego pakietu, aby zmienić wersję powiązania lub jeśli pakiety nie zostały jeszcze zainstalowane. Aby dowiedzieć się więcej, zobacz pakiet rozszerzeń.

Ta wersja wprowadza możliwość nawiązywania połączenia przy użyciu tożsamości zamiast wpisu tajnego. Aby zapoznać się z samouczkiem dotyczącym konfigurowania aplikacji funkcji przy użyciu tożsamości zarządzanych, zobacz samouczek dotyczący tworzenia aplikacji funkcji z połączeniami opartymi na tożsamościach.

Tę wersję rozszerzenia można dodać z pakietu rozszerzeń w wersji zapoznawczej w wersji 3, dodając lub zastępując następujący kod w host.json pliku:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.3.0, 4.0.0)"
    }
}

Aby dowiedzieć się więcej, zobacz Aktualizowanie rozszerzeń.

Typy powiązań

Typy powiązań obsługiwane dla platformy .NET zależą zarówno od wersji rozszerzenia, jak i trybu wykonywania języka C#, który może być jednym z następujących elementów:

Biblioteka klas w procesie to skompilowana funkcja języka C# działa w tym samym procesie co środowisko uruchomieniowe usługi Functions.

Wybierz wersję, aby wyświetlić szczegóły typu powiązania dla trybu i wersji.

Rozszerzenie Azure Queues obsługuje typy parametrów zgodnie z poniższą tabelą.

Scenariusz wiązania Typy parametrów
Wyzwalacz kolejki QueueMessage
Typy serializacji JSON1
string
byte[]
Binarydata
Dane wyjściowe kolejki (pojedynczy komunikat) QueueMessage
Typy serializacji JSON1
string
byte[]
Binarydata
Dane wyjściowe kolejki (wiele komunikatów) QueueClient
ICollector<T> lub IAsyncCollector<T> gdzie T jest jednym z typów komunikatów

1 Komunikaty zawierające dane JSON mogą zostać zdeserializowane na znane typy zwykłych obiektów CLR (POCO).

Ustawienia pliku host.json

W tej sekcji opisano ustawienia konfiguracji dostępne dla tego powiązania w wersjach 2.x i nowszych. Ustawienia w pliku host.json mają zastosowanie do wszystkich funkcji w wystąpieniu aplikacji funkcji. Poniższy przykładowy plik host.json zawiera tylko ustawienia wersji 2.x+ dla tego powiązania. Aby uzyskać więcej informacji na temat ustawień konfiguracji aplikacji funkcji w wersjach 2.x i nowszych, zobacz dokumentację pliku host.json dla Azure Functions.

Uwaga

Aby zapoznać się z dokumentacją pliku host.json w usłudze Functions 1.x, zobacz dokumentację pliku host.json dla Azure Functions 1.x.

{
    "version": "2.0",
    "extensions": {
        "queues": {
            "maxPollingInterval": "00:00:02",
            "visibilityTimeout" : "00:00:30",
            "batchSize": 16,
            "maxDequeueCount": 5,
            "newBatchThreshold": 8,
            "messageEncoding": "base64"
        }
    }
}
Właściwość Domyślny Opis
maxPollingInterval 00:01:00 Maksymalny interwał między sondami kolejki. Minimalny interwał to 00:00:00.100 (100 ms). Interwały zwiększają się do maxPollingInterval. Wartość domyślna to maxPollingInterval 00:01:00 (1 min). maxPollingInterval nie może być mniejsza niż 00:00:00.100 (100 ms). W systemie Functions w wersji 2.x lub nowszej typ danych to TimeSpan. W usłudze Functions 1.x jest w milisekundach.
visibilityTimeout 00:00:00 Interwał czasu między kolejnymi próbami podczas przetwarzania komunikatu kończy się niepowodzeniem.
batchSize 16 Liczba komunikatów kolejki pobieranych jednocześnie i przetwarzanych równolegle przez środowisko uruchomieniowe usługi Functions. Gdy przetwarzany numer przechodzi w dół do newBatchThreshold, środowisko uruchomieniowe pobiera kolejną partię i rozpoczyna przetwarzanie tych komunikatów. W związku z tym maksymalna liczba przetwarzanych współbieżnych komunikatów na funkcję wynosi batchSize plus newBatchThreshold. Ten limit ma zastosowanie oddzielnie do każdej funkcji wyzwalanej przez kolejkę.

Jeśli chcesz uniknąć równoległego wykonywania komunikatów odebranych w jednej kolejce, możesz ustawić wartość batchSize 1. To ustawienie eliminuje jednak współbieżność, o ile aplikacja funkcji działa tylko na jednej maszynie wirtualnej. Jeśli aplikacja funkcji skaluje się w poziomie do wielu maszyn wirtualnych, każda maszyna wirtualna może uruchomić jedno wystąpienie każdej funkcji wyzwalanej w kolejce.

Maksymalna wartość batchSize to 32.
maxDequeueCount 5 Liczba prób przetworzenia komunikatu przed przeniesieniem go do kolejki trucizny.
newBatchThreshold N*batchSize/2 Za każdym razem, gdy liczba komunikatów przetwarzanych współbieżnie spada do tej liczby, środowisko uruchomieniowe pobiera kolejną partię.

Nreprezentuje liczbę procesorów wirtualnych dostępnych podczas uruchamiania w planach App Service lub Premium. Jego wartość jest 1 przeznaczona dla planu zużycia.
messageEncoding base64 To ustawienie jest dostępne tylko w pakiecie rozszerzeń w wersji 5.0.0 lub nowszej. Reprezentuje format kodowania komunikatów. Prawidłowe wartości to base64 i none.

Następne kroki