Wyzwalacz usługi Azure Queue Storage dla usługi Azure Functions

Wyzwalacz magazynu kolejek uruchamia funkcję, ponieważ komunikaty są dodawane do usługi Azure Queue Storage.

Decyzje dotyczące skalowania usługi Azure Queue Storage dla planów Zużycie i Premium są wykonywane za pośrednictwem skalowania na podstawie celu. Aby uzyskać więcej informacji, zobacz Skalowanie na podstawie celu.

Ważne

W tym artykule są używane karty do obsługi wielu wersji modelu programowania Node.js. Model w wersji 4 jest ogólnie dostępny i ma bardziej elastyczne i intuicyjne środowisko dla deweloperów języka JavaScript i Języka TypeScript. Aby uzyskać więcej informacji na temat sposobu działania modelu w wersji 4, zapoznaj się z przewodnikiem dewelopera dotyczącym usługi Azure Functions Node.js. Aby dowiedzieć się więcej o różnicach między wersjami 3 i v4, zapoznaj się z przewodnikiem migracji.

Usługa Azure Functions obsługuje dwa modele programowania dla języka Python. Sposób definiowania powiązań zależy od wybranego modelu programowania.

Model programowania w języku Python w wersji 2 umożliwia definiowanie powiązań przy użyciu dekoratorów bezpośrednio w kodzie funkcji języka Python. Aby uzyskać więcej informacji, zobacz przewodnik dla deweloperów języka Python.

Ten artykuł obsługuje oba modele programowania.

Przykład

Użyj wyzwalacza kolejki, aby uruchomić funkcję po odebraniu nowego elementu w kolejce. Komunikat w kolejce jest przekazywany do funkcji jako dane wejściowe.

Funkcję języka C# można utworzyć przy użyciu jednego z następujących trybów języka C#:

  • Model izolowanego procesu roboczego: skompilowana funkcja języka C#, która jest uruchamiana w procesie roboczym izolowanym od środowiska uruchomieniowego. Proces izolowanego procesu roboczego jest wymagany do obsługi funkcji języka C# uruchomionych w wersjach LTS i innych niż LTS platformy .NET oraz programu .NET Framework. Rozszerzenia dla izolowanych funkcji procesu roboczego używają Microsoft.Azure.Functions.Worker.Extensions.* przestrzeni nazw.
  • Model przetwarzania: skompilowana funkcja języka C#, która działa w tym samym procesie co środowisko uruchomieniowe usługi 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 języka C#. Rozszerzenia dla funkcji przetwarzania używają Microsoft.Azure.WebJobs.Extensions.* przestrzeni nazw.

Ważne

Wsparcie zostanie zakończone dla modelu procesu 10 listopada 2026 r. Zdecydowanie zalecamy przeprowadzenie migracji aplikacji do izolowanego modelu procesu roboczego w celu uzyskania pełnej obsługi.

W poniższym przykładzie pokazano funkcję języka C#, która sonduje input-queue kolejkę i zapisuje kilka komunikatów w kolejce wyjściowej za każdym razem, gdy element kolejki jest przetwarzany.

[Function(nameof(QueueFunction))]
[QueueOutput("output-queue")]
public string[] Run([QueueTrigger("input-queue")] Album myQueueItem, FunctionContext context)
{
    // Use a string array to return more than one message.
    string[] messages = {
        $"Album name = {myQueueItem.Name}",
        $"Album songs = {myQueueItem.Songs.ToString()}"};

    _logger.LogInformation("{msg1},{msg2}", messages[0], messages[1]);

    // Queue Output messages
    return messages;
}

Poniższy przykład języka Java przedstawia funkcję wyzwalacza kolejki magazynu, która rejestruje wyzwolony komunikat umieszczony w kolejce myqueuename.

@FunctionName("queueprocessor")
public void run(
    @QueueTrigger(name = "msg",
                queueName = "myqueuename",
                connection = "myconnvarname") String message,
    final ExecutionContext context
) {
    context.getLogger().info(message);
}

W poniższym przykładzie przedstawiono funkcję TypeScript wyzwalacza kolejki. Funkcja sonduje kolejkę myqueue-items i zapisuje dziennik za każdym razem, gdy element kolejki jest przetwarzany.

import { app, InvocationContext } from '@azure/functions';

export async function storageQueueTrigger1(queueItem: unknown, context: InvocationContext): Promise<void> {
    context.log('Storage queue function processed work item:', queueItem);
    context.log('expirationTime =', context.triggerMetadata.expirationTime);
    context.log('insertionTime =', context.triggerMetadata.insertionTime);
    context.log('nextVisibleTime =', context.triggerMetadata.nextVisibleTime);
    context.log('id =', context.triggerMetadata.id);
    context.log('popReceipt =', context.triggerMetadata.popReceipt);
    context.log('dequeueCount =', context.triggerMetadata.dequeueCount);
}

app.storageQueue('storageQueueTrigger1', {
    queueName: 'myqueue-items',
    connection: 'MyStorageConnectionAppSetting',
    handler: storageQueueTrigger1,
});

W sekcji użycia wyjaśniono queueItem. Sekcja metadanych komunikatu zawiera opis wszystkich innych pokazanych zmiennych.

W poniższym przykładzie przedstawiono funkcję JavaScript wyzwalacza kolejki. Funkcja sonduje kolejkę myqueue-items i zapisuje dziennik za każdym razem, gdy element kolejki jest przetwarzany.

const { app } = require('@azure/functions');

app.storageQueue('storageQueueTrigger1', {
    queueName: 'myqueue-items',
    connection: 'MyStorageConnectionAppSetting',
    handler: (queueItem, context) => {
        context.log('Storage queue function processed work item:', queueItem);
        context.log('expirationTime =', context.triggerMetadata.expirationTime);
        context.log('insertionTime =', context.triggerMetadata.insertionTime);
        context.log('nextVisibleTime =', context.triggerMetadata.nextVisibleTime);
        context.log('id =', context.triggerMetadata.id);
        context.log('popReceipt =', context.triggerMetadata.popReceipt);
        context.log('dequeueCount =', context.triggerMetadata.dequeueCount);
    },
});

W sekcji użycia wyjaśniono queueItem. Sekcja metadanych komunikatu zawiera opis wszystkich innych pokazanych zmiennych.

W poniższym przykładzie pokazano, jak odczytać komunikat kolejki przekazywany do funkcji za pośrednictwem wyzwalacza.

Wyzwalacz kolejki magazynu jest zdefiniowany w pliku function.json , w którym type ustawiono wartość queueTrigger.

{
  "bindings": [
    {
      "name": "QueueItem",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "messages",
      "connection": "MyStorageConnectionAppSetting"
    }
  ]
}

Kod w pliku Run.ps1 deklaruje parametr jako $QueueItem, który umożliwia odczytywanie komunikatu kolejki w funkcji.

# Input bindings are passed in via param block.
param([string] $QueueItem, $TriggerMetadata)

# Write out the queue message and metadata to the information log.
Write-Host "PowerShell queue trigger function processed work item: $QueueItem"
Write-Host "Queue item expiration time: $($TriggerMetadata.ExpirationTime)"
Write-Host "Queue item insertion time: $($TriggerMetadata.InsertionTime)"
Write-Host "Queue item next visible time: $($TriggerMetadata.NextVisibleTime)"
Write-Host "ID: $($TriggerMetadata.Id)"
Write-Host "Pop receipt: $($TriggerMetadata.PopReceipt)"
Write-Host "Dequeue count: $($TriggerMetadata.DequeueCount)"

W poniższym przykładzie pokazano, jak odczytać komunikat kolejki przekazywany do funkcji za pośrednictwem wyzwalacza. Przykład zależy od tego, czy używasz modelu programowania w wersji 1, czy w wersji 2 języka Python.

import logging
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="QueueFunc")
@app.queue_trigger(arg_name="msg", queue_name="inputqueue",
                   connection="storageAccountConnectionString")  # Queue trigger
@app.queue_output(arg_name="outputQueueItem", queue_name="outqueue",
                 connection="storageAccountConnectionString")  # Queue output binding
def test_function(msg: func.QueueMessage,
                  outputQueueItem: func.Out[str]) -> None:
    logging.info('Python queue trigger function processed a queue item: %s',
                 msg.get_body().decode('utf-8'))
    outputQueueItem.set('hello')

Atrybuty

Biblioteki języka C# procesu roboczego zarówno w procesie przetwarzania procesowego, jak i izolowanego, używają atrybutu QueueTriggerAttribute do zdefiniowania funkcji. Zamiast tego skrypt języka C# używa pliku konfiguracji function.json zgodnie z opisem w przewodniku obsługi skryptów języka C#.

W bibliotekach klas języka C# konstruktor atrybutu przyjmuje nazwę kolejki do monitorowania, jak pokazano w poniższym przykładzie:

[Function(nameof(QueueFunction))]
[QueueOutput("output-queue")]
public string[] Run([QueueTrigger("input-queue")] Album myQueueItem, FunctionContext context)

W tym przykładzie pokazano również ustawienie parametry połączenia w samym atrybucie.

Adnotacje

Adnotacja QueueTrigger zapewnia dostęp do kolejki, która wyzwala funkcję. W poniższym przykładzie komunikat kolejki jest dostępny dla funkcji za pośrednictwem parametru message .

package com.function;
import com.microsoft.azure.functions.annotation.*;
import java.util.Queue;
import com.microsoft.azure.functions.*;

public class QueueTriggerDemo {
    @FunctionName("QueueTriggerDemo")
    public void run(
        @QueueTrigger(name = "message", queueName = "messages", connection = "MyStorageConnectionAppSetting") String message,
        final ExecutionContext context
    ) {
        context.getLogger().info("Queue message: " + message);
    }
}
Właściwości opis
name Deklaruje nazwę parametru w podpisie funkcji. Po wyzwoleniu funkcji wartość tego parametru zawiera zawartość komunikatu kolejki.
queueName Deklaruje nazwę kolejki na koncie magazynu.
connection Wskazuje parametry połączenia konta magazynu.

Dekoratory

Dotyczy tylko modelu programowania w wersji 2 języka Python.

W przypadku funkcji języka Python w wersji 2 zdefiniowanych przy użyciu dekoratorów następujące właściwości queue_trigger dekoratora definiują wyzwalacz usługi Queue Storage:

Właściwości opis
arg_name Deklaruje nazwę parametru w podpisie funkcji. Po wyzwoleniu funkcji wartość tego parametru zawiera zawartość komunikatu kolejki.
queue_name Deklaruje nazwę kolejki na koncie magazynu.
connection Wskazuje parametry połączenia konta magazynu.

Aby zapoznać się z funkcjami języka Python zdefiniowanymi przy użyciu function.json, zobacz sekcję Konfiguracja.

Konfigurowanie

Dotyczy tylko modelu programowania języka Python w wersji 1.

W poniższej tabeli opisano właściwości, które można ustawić dla options obiektu przekazanego app.storageQueue() do metody .

Właściwości opis
Queuename Nazwa kolejki do sondowania.
Połączenia Nazwa ustawienia aplikacji lub kolekcji ustawień, która określa sposób nawiązywania połączenia z kolejkami platformy Azure. Zobacz Połączenie ions.

W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione w pliku function.json i atrybutu QueueTrigger .

właściwość function.json opis
type Musi być ustawiona wartość queueTrigger. Ta właściwość jest ustawiana automatycznie podczas tworzenia wyzwalacza w witrynie Azure Portal.
direction Tylko w pliku function.json. Musi być ustawiona wartość in. Ta właściwość jest ustawiana automatycznie podczas tworzenia wyzwalacza w witrynie Azure Portal.
name Nazwa zmiennej zawierającej ładunek elementu kolejki w kodzie funkcji.
Queuename Nazwa kolejki do sondowania.
Połączenia Nazwa ustawienia aplikacji lub kolekcji ustawień, która określa sposób nawiązywania połączenia z kolejkami platformy Azure. Zobacz Połączenie ions.

Zobacz sekcję Przykład, aby zapoznać się z kompletnymi przykładami.

Podczas tworzenia aplikacji lokalnie dodaj ustawienia aplikacji w pliku local.settings.json w kolekcji Values .

Użycie

Uwaga

Funkcje oczekują ciągu zakodowanego w formacie base64 . Wszelkie korekty typu kodowania (w celu przygotowania danych jako ciąg zakodowany w formacie base64 ) muszą zostać zaimplementowane w usłudze wywołującej.

Użycie wyzwalacza kolejki zależy od wersji pakietu rozszerzenia i modalności języka C# używanej w aplikacji funkcji, co może być jednym z następujących trybó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 użycia dla trybu i wersji.

Wyzwalacz kolejki może wiązać się z następującymi typami:

Type Opis
string Zawartość wiadomości jako ciąg. Użyj polecenia , gdy komunikat jest prosty tekst.
byte[] Bajty komunikatu.
Typy serializowalne w formacie JSON Gdy komunikat w kolejce zawiera dane JSON, usługa Functions próbuje wykonać deserializacji danych JSON w zwykły typ obiektu CLR (POCO).
QueueMessage1 Komunikat.
BinaryData1 Bajty komunikatu.

1 Aby użyć tych typów, należy odwołać się do elementów Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues 5.2.0 lub nowszych oraz typowych zależności dla powiązań typu zestawu SDK.

Adnotacja QueueTrigger zapewnia dostęp do komunikatu kolejki, który wyzwolił funkcję.

Uzyskaj dostęp do elementu kolejki jako pierwszego argumentu funkcji. Jeśli ładunek to JSON, wartość jest deserializowana do obiektu.

Uzyskaj dostęp do komunikatu kolejki za pośrednictwem parametru ciągu zgodnego z nazwą wyznaczoną przez parametr powiązania name w pliku function.json .

Uzyskaj dostęp do komunikatu kolejki za pośrednictwem parametru wpisanego jako QueueMessage.

Metadane

Wyzwalacz kolejki zawiera kilka właściwości metadanych. Te właściwości mogą być używane jako część wyrażeń powiązań w innych powiązaniach lub jako parametry w kodzie dla procesów roboczych języka, które zapewniają ten dostęp do metadanych komunikatów.

Właściwości metadanych komunikatu są elementami członkowskimi klasy CloudQueueMessage .

Dostęp do właściwości metadanych wiadomości można uzyskać z witryny context.triggerMetadata.

Dostęp do właściwości metadanych komunikatu można uzyskać z przekazanego $TriggerMetadata parametru.

Właściwość Type Opis
QueueTrigger string Ładunek kolejki (jeśli jest prawidłowym ciągiem). Jeśli ładunek komunikatu kolejki jest ciągiem, QueueTrigger ma taką samą wartość jak zmienna o nazwie właściwości name w function.json.
DequeueCount long Liczba przypadków, gdy ten komunikat został usunięty z kolejki.
ExpirationTime DateTimeOffset Czas wygaśnięcia komunikatu.
Id string Identyfikator komunikatu kolejki.
InsertionTime DateTimeOffset Czas dodania komunikatu do kolejki.
NextVisibleTime DateTimeOffset Czas, po upływie którego komunikat będzie widoczny.
PopReceipt string Potwierdzenie wyskakujące wiadomości.

Dostęp do następujących właściwości metadanych komunikatu można uzyskać z przekazanego parametru powiązania (msg w poprzednich przykładach).

Właściwości opis
body Ładunek kolejki jako ciąg.
dequeue_count Liczba przypadków, gdy ten komunikat został usunięty z kolejki.
expiration_time Czas wygaśnięcia komunikatu.
id Identyfikator komunikatu kolejki.
insertion_time Czas dodania komunikatu do kolejki.
time_next_visible Czas, po upływie którego komunikat będzie widoczny.
pop_receipt Potwierdzenie wyskakujące wiadomości.

Połączenia

Właściwość connection jest odwołaniem do konfiguracji środowiska, która określa sposób łączenia aplikacji z kolejkami platformy Azure. Może to określać:

  • Nazwa ustawienia aplikacji zawierającego parametry połączenia
  • Nazwa udostępnionego prefiksu dla wielu ustawień aplikacji, definiująca połączenie oparte na tożsamościach.

Jeśli skonfigurowana wartość jest dokładnie zgodna z pojedynczym ustawieniem i dopasowaniem prefiksu dla innych ustawień, zostanie użyte dokładne dopasowanie.

Connection string

Aby uzyskać parametry połączenia, wykonaj kroki opisane w temacie Zarządzanie kluczami dostępu do konta magazynu.

Ta parametry połączenia powinna być przechowywana w ustawieniu aplikacji z nazwą zgodną z wartością określoną przez connection właściwość konfiguracji powiązania.

Jeśli nazwa ustawienia aplikacji zaczyna się od "AzureWebJobs", możesz określić tylko pozostałą część nazwy w tym miejscu. Jeśli na przykład ustawiono connection wartość "MyStorage", środowisko uruchomieniowe usługi Functions wyszukuje ustawienie aplikacji o nazwie "AzureWebJobsMyStorage". W przypadku pozostawienia connection pustego środowisko uruchomieniowe usługi Functions używa domyślnej parametry połączenia Storage w ustawieniu aplikacji o nazwie AzureWebJobsStorage.

Połączenia oparte na tożsamościach

Jeśli używasz wersji 5.x lub nowszej rozszerzenia (pakietu 3.x lub nowszego dla stosów języka non-.NET), zamiast używać parametry połączenia z wpisem tajnym, możesz mieć aplikację korzystającą z tożsamości Microsoft Entra. Aby użyć tożsamości, należy zdefiniować ustawienia w ramach wspólnego prefiksu, który mapuje na connection właściwość w konfiguracji wyzwalacza i powiązania.

Jeśli ustawisz wartość connection "AzureWebJobsStorage", zobacz Połączenie do hostowania magazynu z tożsamością. W przypadku wszystkich innych połączeń rozszerzenie wymaga następujących właściwości:

Właściwości Szablon zmiennej środowiskowej opis Przykładowa wartość
Identyfikator URI usługi kolejki <CONNECTION_NAME_PREFIX>__queueServiceUri1 Identyfikator URI płaszczyzny danych usługi kolejki, z którą nawiązujesz połączenie, przy użyciu schematu HTTPS. <https:// storage_account_name.queue.core.windows.net>

1<CONNECTION_NAME_PREFIX>__serviceUri może służyć jako alias. Jeśli podano oba formularze, queueServiceUri zostanie użyty formularz. Nie serviceUri można użyć formularza, gdy ogólna konfiguracja połączenia ma być używana w obiektach blob, kolejkach i/lub tabelach.

Inne właściwości można ustawić, aby dostosować połączenie. Zobacz Typowe właściwości połączeń opartych na tożsamościach.

W przypadku hostowania w usłudze Azure Functions połączenia oparte na tożsamościach używają tożsamości zarządzanej. Tożsamość przypisana przez system jest używana domyślnie, chociaż tożsamości przypisanej przez użytkownika można określić za credential pomocą właściwości i clientID . Należy pamiętać, że konfigurowanie tożsamości przypisanej przez użytkownika przy użyciu identyfikatora zasobu nie jest obsługiwane. W przypadku uruchamiania w innych kontekstach, takich jak programowanie lokalne, tożsamość dewelopera jest używana, chociaż można to dostosować. Zobacz Programowanie lokalne z połączeniami opartymi na tożsamościach.

Udzielanie uprawnień tożsamości

Niezależnie od używanej tożsamości musi mieć uprawnienia do wykonywania zamierzonych akcji. W przypadku większości usług platformy Azure oznacza to, że musisz przypisać rolę w kontroli dostępu opartej na rolach platformy Azure przy użyciu wbudowanych lub niestandardowych ról, które zapewniają te uprawnienia.

Ważne

Niektóre uprawnienia mogą być uwidocznione przez usługę docelową, które nie są niezbędne dla wszystkich kontekstów. Jeśli to możliwe, przestrzegaj zasady najniższych uprawnień, udzielając tożsamości tylko wymaganych uprawnień. Jeśli na przykład aplikacja musi mieć możliwość odczytu tylko ze źródła danych, użyj roli, która ma uprawnienia tylko do odczytu. Niewłaściwe byłoby przypisanie roli, która umożliwia również zapisywanie w tej usłudze, ponieważ byłoby to nadmierne uprawnienie do operacji odczytu. Podobnie należy upewnić się, że przypisanie roli jest ograniczone tylko do zasobów, które należy odczytać.

Należy utworzyć przypisanie roli, które zapewnia dostęp do kolejki w czasie wykonywania. Role zarządzania, takie jak Właściciel , nie są wystarczające. W poniższej tabeli przedstawiono wbudowane role, które są zalecane podczas korzystania z rozszerzenia Queue Storage w normalnej operacji. Aplikacja może wymagać dodatkowych uprawnień na podstawie zapisanego kodu.

Typ powiązania Przykładowe role wbudowane
Wyzwalacz Czytelnik danych kolejki usługi Storage, procesor komunikatów kolejki magazynu
Powiązanie wyjściowe Współautor danych kolejki usługi Storage, nadawca komunikatów dotyczących kolejki magazynu

Komunikaty o truciznach

Gdy funkcja wyzwalacza kolejki zakończy się niepowodzeniem, usługa Azure Functions ponawia próbę funkcji do pięciu razy dla danego komunikatu kolejki, w tym pierwszej próby. Jeśli wszystkie pięć prób nie powiedzie się, środowisko uruchomieniowe funkcji dodaje komunikat do kolejki o nazwie originalqueuename-poison>.< Możesz napisać funkcję do przetwarzania komunikatów z kolejki trucizny, rejestrując je lub wysyłając powiadomienie, że wymagana jest ręczna uwaga.

Aby ręcznie obsłużyć komunikaty trucizny, sprawdź dequeueCount komunikatu kolejki.

Podgląd blokady

Wzorzec podglądu blokady odbywa się automatycznie dla wyzwalaczy kolejki przy użyciu mechaniki widoczności zapewnianej przez usługę magazynu. Ponieważ komunikaty są w kolejce przez funkcję wyzwalaną, są one oznaczone jako niewidoczne. Wykonanie funkcji wyzwalanej przez kolejkę może mieć jeden z tych wyników w komunikacie w kolejce:

  • Wykonanie funkcji zakończy się pomyślnie i komunikat zostanie usunięty z kolejki.
  • Wykonywanie funkcji kończy się niepowodzeniem, a host usługi Functions aktualizuje widoczność komunikatu na visibilityTimeoutpodstawie ustawienia w pliku host.json. Domyślny limit czasu widoczności wynosi zero, co oznacza, że komunikat natychmiast pojawia się ponownie w kolejce do ponownego przetwarzania. Użyj ustawienia , visibilityTimeout aby opóźnić ponowne przetwarzanie komunikatów, które nie mogą być przetwarzane. To ustawienie limitu czasu dotyczy wszystkich funkcji wyzwalanych przez kolejkę w aplikacji funkcji.
  • Host usługi Functions ulega awarii podczas wykonywania funkcji. W przypadku wystąpienia tego nietypowego zdarzenia host nie może zastosować visibilityTimeout elementu do przetwarzanego komunikatu. Zamiast tego komunikat pozostaje z domyślnym limitem czasu 10 minut ustawionym przez usługę magazynu. Po 10 minutach komunikat pojawia się ponownie w kolejce do ponownego przetwarzania. Nie można zmienić domyślnego limitu czasu zdefiniowanego przez usługę.

Algorytm sondowania

Wyzwalacz kolejki implementuje losowy algorytm wycofywania wykładniczego, aby zmniejszyć wpływ bezczynności sondowania kolejki na koszty transakcji magazynu.

Algorytm używa następującej logiki:

  • Po znalezieniu komunikatu środowisko uruchomieniowe czeka 100 milisekund, a następnie sprawdza kolejną wiadomość.
  • Jeśli komunikat nie zostanie znaleziony, czeka około 200 milisekund przed ponowną próbą.
  • Po kolejnych nieudanych próbach pobrania komunikatu w kolejce czas oczekiwania będzie nadal zwiększany do momentu osiągnięcia maksymalnego czasu oczekiwania, który domyślnie wynosi jedną minutę.
  • Maksymalny czas oczekiwania można skonfigurować za pośrednictwem maxPollingInterval właściwości w pliku host.json.

Podczas programowania lokalnego maksymalny interwał sondowania jest domyślnie do dwóch sekund.

Uwaga

W odniesieniu do rozliczeń podczas hostowania aplikacji funkcji w planie Zużycie nie są naliczane opłaty za czas spędzony na sondowaniu przez środowisko uruchomieniowe.

Współbieżność

Gdy oczekuje wiele komunikatów w kolejce, wyzwalacz kolejki pobiera partię komunikatów i wywołuje wystąpienia funkcji jednocześnie, aby je przetwarzać. Domyślnie rozmiar partii to 16. Gdy przetwarzany numer spadnie do 8, środowisko uruchomieniowe pobiera kolejną partię i rozpoczyna przetwarzanie tych komunikatów. Maksymalna liczba współbieżnych komunikatów przetwarzanych na funkcję na jednej maszynie wirtualnej wynosi 24. Ten limit ma zastosowanie oddzielnie do każdej funkcji wyzwalanej przez kolejkę na każdej maszynie wirtualnej. Jeśli aplikacja funkcji skaluje się w poziomie do wielu maszyn wirtualnych, każda maszyna wirtualna czeka na wyzwalacze i próbuje uruchomić funkcje. Jeśli na przykład aplikacja funkcji skaluje się w poziomie do 3 maszyn wirtualnych, domyślna maksymalna liczba współbieżnych wystąpień jednej funkcji wyzwalanej w kolejce wynosi 72.

Rozmiar partii i próg pobierania nowej partii można skonfigurować w pliku host.json. Jeśli chcesz zminimalizować równoległe wykonywanie funkcji wyzwalanych przez kolejkę w aplikacji funkcji, możesz ustawić rozmiar partii na 1. To ustawienie eliminuje współbieżność tylko tak długo, jak aplikacja funkcji działa na jednej maszynie wirtualnej.

Wyzwalacz kolejki automatycznie uniemożliwia funkcji wielokrotne przetwarzanie komunikatu kolejki.

host.json właściwości

Plik host.json zawiera ustawienia sterujące zachowaniem wyzwalacza kolejki. Aby uzyskać szczegółowe informacje dotyczące dostępnych ustawień, zobacz sekcję host.json settings (Ustawienia host.json).

Następne kroki