Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure Functions integruje się z usługą Azure Service Bus za pośrednictwem wyzwalaczy i powiązań. Integracja z usługą Service Bus umożliwia tworzenie funkcji reagujących na kolejkę lub komunikaty tematu oraz wysyłanie ich.
| Akcja | Typ |
|---|---|
| Uruchamianie funkcji po utworzeniu kolejki usługi Service Bus lub komunikatu tematu | Wyzwalacz |
| Wysyłanie komunikatów usługi Azure Service Bus | Powiązanie wyjściowe |
Instalowanie rozszerzenia
Instalowany pakiet NuGet rozszerzenia zależy od trybu języka C#, którego używasz w aplikacji funkcji:
Funkcje są wykonywane w izolowanym procesie roboczym języka C#. Aby dowiedzieć się więcej, zobacz Przewodnik dotyczący uruchamiania usługi Azure Functions w języku C# w izolowanym procesie roboczym.
Dodaj rozszerzenie do projektu instalujące ten pakiet NuGet.
Funkcjonalność rozszerzenia różni się w zależności od wersji rozszerzenia:
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 pliku Azure.Messaging.ServiceBus.
Ta wersja obsługuje konfigurację wyzwalaczy i powiązań za pośrednictwem integracji platformy .NET Aspire.
Dodaj rozszerzenie do projektu, instalując pakiet NuGet w wersji 5.x.
Instalowanie pakietu
Aby móc używać tego rozszerzenia powiązania w aplikacji, upewnij się, że plik host.json w katalogu głównym projektu zawiera następujące extensionBundle odwołanie:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
W tym przykładzie version[4.0.0, 5.0.0) wartość polecenia nakazuje hostowi usługi Functions użycie wersji pakietu, która jest co najmniej 4.0.0 mniejsza niż 5.0.0, która zawiera wszystkie potencjalne wersje 4.x. Ta notacja skutecznie utrzymuje aplikację w najnowszej dostępnej wersji pomocniczej pakietu rozszerzenia v4.x.
Jeśli to możliwe, należy użyć najnowszej wersji głównej pakietu rozszerzeń i zezwolić środowisku uruchomieniowemu na automatyczne utrzymywanie najnowszej wersji pomocniczej. Zawartość najnowszego pakietu można wyświetlić na stronie wydania pakietów rozszerzeń. Aby uzyskać więcej informacji, zobacz Pakiety rozszerzeń usługi Azure Functions.
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:
Izolowana biblioteka klas procesów roboczych skompilowana funkcja języka C# jest uruchamiana w procesie odizolowanym od środowiska uruchomieniowego.
Wybierz wersję, aby wyświetlić szczegóły typu powiązania dla trybu i wersji.
Proces izolowany proces roboczy obsługuje typy parametrów zgodnie z poniższymi tabelami.
Wyzwalacz usługi Service Bus
Jeśli chcesz, aby funkcja przetwarzała pojedynczy komunikat, wyzwalacz usługi Service Bus może powiązać z następującymi typami:
| Typ | Opis |
|---|---|
string |
Komunikat jako ciąg. Użyj polecenia , gdy wiadomość jest prostym tekstem. |
byte[] |
Bajty komunikatu. |
| Typy serializowalne w formacie JSON | Gdy zdarzenie zawiera dane JSON, usługa Functions próbuje wykonać deserializacji danych JSON w zwykły typ obiektu CLR (POCO). |
| ServiceBusReceivedMessage1 | Obiekt komunikatu. W przypadku powiązania z ServiceBusReceivedMessageusługą można również opcjonalnie dołączyć parametr typu ServiceBusMessageActions 1,2, aby wykonać akcje rozliczenia komunikatów. |
Jeśli chcesz, aby funkcja przetwarzała partię komunikatów, wyzwalacz usługi Service Bus może powiązać z następującymi typami:
| Typ | Opis |
|---|---|
T[] gdzie T jest jednym z typów pojedynczych komunikatów |
Tablica zdarzeń z partii. Każdy wpis reprezentuje jedno zdarzenie. W przypadku powiązania z ServiceBusReceivedMessage[]usługą można również opcjonalnie dołączyć parametr typu ServiceBusMessageActions 1,2, aby wykonać akcje rozliczenia komunikatów. |
1 Aby użyć tych typów, należy odwołać się do elementów Microsoft.Azure.Functions.Worker.Extensions.ServiceBus 5.14.1 lub nowszych oraz typowych zależności dla powiązań typu zestawu SDK.
2 W przypadku używania ServiceBusMessageActionsparametru ustaw AutoCompleteMessages właściwość atrybutu wyzwalacza na falsewartość . Zapobiega to próbie ukończenia komunikatów przez środowisko uruchomieniowe po pomyślnym wywołaniu funkcji.
Powiązanie wyjściowe usługi Service Bus
Jeśli chcesz, aby funkcja mogła napisać pojedynczy komunikat, powiązanie danych wyjściowych usługi Service Bus może wiązać się z następującymi typami:
| Typ | Opis |
|---|---|
string |
Komunikat jako ciąg. Użyj polecenia , gdy wiadomość jest prostym tekstem. |
byte[] |
Bajty komunikatu. |
| Typy serializowalne w formacie JSON | Obiekt reprezentujący komunikat. Funkcje próbują serializować zwykły typ obiektu CLR (POCO) do danych JSON. |
Jeśli chcesz, aby funkcja zapisywała wiele komunikatów, powiązanie danych wyjściowych usługi Service Bus może wiązać się z następującymi typami:
| Typ | Opis |
|---|---|
T[] gdzie T jest jednym z typów pojedynczych komunikatów |
Tablica zawierająca wiele komunikatów. Każdy wpis reprezentuje jeden komunikat. |
W przypadku innych scenariuszy wyjściowych utwórz obiekt ServiceBusClient i użyj go bezpośrednio z poziomu klasy Azure.Messaging.ServiceBus. Zobacz Rejestrowanie klientów platformy Azure, aby zapoznać się z przykładem użycia wstrzykiwania zależności w celu utworzenia typu klienta z zestawu Azure SDK.
Typy powiązań zestawu SDK
Typy zestawów SDK dla usługi Azure Service Bus są dostępne w wersji zapoznawczej. Postępuj zgodnie z przykładowymi powiązaniami zestawu SDK języka Python dla usługi Service Bus , aby rozpocząć pracę z typami zestawu SDK dla usługi Service Bus w języku Python.
Ważne
Korzystanie z powiązań typu zestawu SDK wymaga modelu programowania w języku Python w wersji 2.
| Wiążący | Typy parametrów | Przykłady |
|---|---|---|
| Wyzwalacz ServiceBus | ServiceBusReceivedMessage | ServiceBusReceivedMessage |
ustawienia host.json
W tej sekcji opisano ustawienia konfiguracji dostępne dla tego powiązania, które zależą od środowiska uruchomieniowego i wersji rozszerzenia.
{
"version": "2.0",
"extensions": {
"serviceBus": {
"clientRetryOptions":{
"mode": "exponential",
"tryTimeout": "00:01:00",
"delay": "00:00:00.80",
"maxDelay": "00:01:00",
"maxRetries": 3
},
"prefetchCount": 0,
"transportType": "amqpWebSockets",
"webProxy": "https://proxyserver:8080",
"autoCompleteMessages": true,
"maxAutoLockRenewalDuration": "00:05:00",
"maxConcurrentCalls": 16,
"maxConcurrentSessions": 8,
"maxMessageBatchSize": 1000,
"minMessageBatchSize": 1,
"maxBatchWaitTime": "00:00:30",
"sessionIdleTimeout": "00:01:00",
"enableCrossEntityTransactions": false
}
}
}
Ustawienia clientRetryOptions dotyczą tylko interakcji z usługą Service Bus. Nie mają one wpływu na ponawianie prób wykonywania funkcji. Aby uzyskać więcej informacji, zobacz Ponowne próby.
| Właściwości | Domyślny | Opis |
|---|---|---|
| tryb | Exponential |
Podejście do obliczania opóźnień ponawiania prób. Domyślny tryb wykładniczy ponawia próby z opóźnieniem w oparciu o strategię wycofywania, w której każda próba zwiększa czas trwania oczekiwania przed ponowną próbą. Tryb Fixed ponawia próby w stałych odstępach czasu z każdym opóźnieniem o stałym czasie trwania. |
| tryTimeout | 00:01:00 |
Maksymalny czas trwania oczekiwania na operację na próbę. |
| zwłoka | 00:00:00.80 |
Współczynnik opóźnienia lub wycofywania, który ma być stosowany między ponownymi próbami. |
| maxDelay (maksymalne opóźnienie) | 00:01:00 |
Maksymalne opóźnienie między próbami ponawiania prób |
| maxRetries | 3 |
Maksymalna liczba ponownych prób przed rozważeniem skojarzonej operacji zakończyła się niepowodzeniem. |
| prefetchCount | 0 |
Pobiera lub ustawia liczbę komunikatów, których odbiorca komunikatów może jednocześnie żądać. |
| typ transportu | amqpTcp | Protokół i transport używany do komunikacji z usługą Service Bus. Dostępne opcje: amqpTcp, amqpWebSockets |
| webProxy | nie dotyczy | Serwer proxy do komunikacji z usługą Service Bus za pośrednictwem gniazd internetowych. Nie można używać serwera proxy z transportem amqpTcp . |
| autoUzupełnianieKomunikaty | true |
Określa, czy automatycznie ukończyć komunikaty po pomyślnym wykonaniu funkcji. |
| maxAutoLockRenewalDuration | 00:05:00 |
Maksymalny czas trwania, w którym blokada komunikatu zostanie odnowiona automatycznie. To ustawienie dotyczy tylko funkcji, które odbierają jeden komunikat w danym momencie i nie mają zastosowania do funkcji odbierających partię komunikatów. W przypadku partii maksymalny czas trwania jest ustawiany w usłudze Service Bus na poziomie kolejki lub subskrypcji. |
| maxConcurrentCalls | 16 |
Domyślnie środowisko uruchomieniowe usługi Functions przetwarza wiele komunikatów jednocześnie. To ustawienie ogranicza maksymalną liczbę współbieżnych wywołań do wywołania zwrotnego, które można zainicjować dla wystąpienia skalowanego w skali. Jeśli plan hostingu ma więcej niż jeden rdzeń na wystąpienie, maksymalna liczba wywołań jest skutecznie mnożona przez liczbę rdzeni. Na przykład w planie, który działa na sprzęcie z dwoma rdzeniami, ustawienie 16 domyślne oznacza, że maksymalna liczba współbieżnych wywołań na wystąpienie jest naprawdę 32 (lub 2 * 16). To ustawienie jest używane tylko wtedy, gdy isSessionsEnabled właściwość lub atrybut w wyzwalaczu ma wartość false. To ustawienie dotyczy tylko funkcji, które odbierają jeden komunikat w danym momencie, a nie w partii. |
| maxConcurrentSessions | 8 |
Maksymalna liczba sesji, które mogą być obsługiwane współbieżnie na wystąpienie skalowane. To ustawienie jest używane tylko wtedy, gdy isSessionsEnabled właściwość lub atrybut w wyzwalaczu ma wartość true. To ustawienie dotyczy tylko funkcji, które odbierają jeden komunikat jednocześnie. |
| maxMessageBatchSize | 1000 |
Maksymalna liczba komunikatów, które zostaną przekazane do każdego wywołania funkcji. To ustawienie dotyczy tylko funkcji, które odbierają partię komunikatów. |
| minMessageBatchSize1 | 1 |
Minimalna liczba komunikatów żądanych w partii. Minimalna wartość ma zastosowanie tylko wtedy, gdy funkcja odbiera wiele komunikatów i musi być mniejsza niż maxMessageBatchSize. Minimalny rozmiar nie jest ściśle gwarantowany. Częściowa partia jest wysyłana, gdy nie można przygotować pełnej partii przed upływem maxBatchWaitTime . |
| maxBatchWaitTime1 | 00:00:30 |
Maksymalny interwał, który wyzwalacz powinien czekać na wypełnienie partii przed wywołaniem funkcji. Czas oczekiwania jest brany pod uwagę tylko wtedy, gdy minMessageBatchSize jest większy niż 1 i jest ignorowany w przeciwnym razie.
minMessageBatchSize Jeśli komunikaty były dostępne przed upływem czasu oczekiwania, funkcja jest wywoływana z częściową partią. Najdłuższy dozwolony czas oczekiwania wynosi 50% czasu trwania blokady komunikatu jednostki, co oznacza, że maksymalna dozwolona wartość to 2 minuty i 30 sekund. W przeciwnym razie mogą wystąpić wyjątki blokady. UWAGA: Ten interwał nie jest ścisłą gwarancją dokładnego czasu wywoływania funkcji. Istnieje niewielki margines błędu ze względu na precyzję czasomierza. |
| sessionIdleTimeout | nie dotyczy | Maksymalny czas oczekiwania na odebranie komunikatu dla aktualnie aktywnej sesji. Po upływie tego czasu sesja zostanie zamknięta, a funkcja podejmie próbę przetworzenia innej sesji. |
| enableCrossEntityTransactions | false |
Czy włączyć transakcje obejmujące wiele jednostek w przestrzeni nazw usługi Service Bus. |
1 Używanie pakietu minMessageBatchSize i maxBatchWaitTime wymaga wersji 5.10.0Microsoft.Azure.WebJobs.Extensions.ServiceBus pakietu lub nowszej.