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:
- Microsoft.Azure.WebJobs.Extensions.Storage.Blobs
- Microsoft.Azure.WebJobs.Extensions.Storage.Queues
- Microsoft.Azure.WebJobs.Extensions.Tables
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) | QueueClientICollector<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ę.N reprezentuje 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 . |