Overzicht van Azure Queue Storage-triggers en -bindingen voor Azure Functions

Azure Functions kan worden uitgevoerd als nieuwe Azure Queue Storage-berichten worden gemaakt en kan wachtrijberichten binnen een functie schrijven.

Actie Type
Een functie uitvoeren als wijzigingen in wachtrijopslaggegevens Trigger
Wachtrijopslagberichten schrijven Uitvoerbinding

De extensie installeren

Het NuGet-extensiepakket dat u installeert, is afhankelijk van de C#-modus die u gebruikt in uw functie-app:

Functies worden uitgevoerd in een geïsoleerd C#-werkproces. Zie De handleiding voor het uitvoeren van C# Azure Functions in een geïsoleerd werkproces voor meer informatie.

De functionaliteit van de extensie varieert afhankelijk van de extensieversie:

Deze versie introduceert de mogelijkheid om verbinding te maken met behulp van een identiteit in plaats van een geheim. Zie de zelfstudie over het maken van een functie-app met op identiteit gebaseerde verbindingen voor een zelfstudie over het configureren van uw functie-apps met beheerde identiteiten.

Met deze versie kunt u verbinding maken met typen van Azure.Storage.Queues.

Voeg de extensie toe aan uw project door het NuGet-pakket versie 5.x te installeren.

De .NET CLI gebruiken:

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

Notitie

Azure Blobs, Azure Queues en Azure Tables maken nu gebruik van afzonderlijke extensies en worden afzonderlijk verwezen. Als u bijvoorbeeld de triggers en bindingen voor alle drie de services in uw .NET-proces-app wilt gebruiken, moet u de volgende pakketten toevoegen aan uw project:

Voorheen werden de extensies samen geleverd als Microsoft.Azure.Functions.Worker.Extensions.Storage, versie 4.x. Hetzelfde pakket heeft ook een 5.x-versie, die alleen verwijst naar de gesplitste pakketten voor blobs en wachtrijen. Wanneer u uw pakketverwijzingen van oudere versies bijwerkt, moet u mogelijk ook verwijzen naar het nieuwe Microsoft.Azure.Functions.Worker.Extensions.Tables NuGet-pakket. Wanneer u naar deze nieuwere gesplitste pakketten verwijst, moet u er ook voor zorgen dat u niet verwijst naar een oudere versie van het gecombineerde opslagpakket, omdat dit conflicten oplevert van twee definities van dezelfde bindingen.

Bundel installeren

De Blob Storage-binding maakt deel uit van een extensiebundel, die is opgegeven in uw host.json projectbestand. Mogelijk moet u deze bundel wijzigen om de versie van de binding te wijzigen of als bundels nog niet zijn geïnstalleerd. Zie uitbreidingsbundel voor meer informatie.

Deze versie introduceert de mogelijkheid om verbinding te maken met behulp van een identiteit in plaats van een geheim. Zie de zelfstudie over het maken van een functie-app met op identiteit gebaseerde verbindingen voor een zelfstudie over het configureren van uw functie-apps met beheerde identiteiten.

U kunt deze versie van de extensie toevoegen vanuit de preview-extensiebundel v3 door de volgende code toe te voegen of te vervangen in uw host.json bestand:

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

Zie Uw extensies bijwerken voor meer informatie.

Bindingstypen

De bindingstypen die worden ondersteund voor .NET zijn afhankelijk van zowel de extensieversie als de C#-uitvoeringsmodus. Dit kan een van de volgende zijn:

Een geïsoleerde werkprocesklassebibliotheek gecompileerde C#-functie wordt uitgevoerd in een proces dat is geïsoleerd van de runtime.

Kies een versie om de details van het bindingstype voor de modus en versie weer te geven.

Het geïsoleerde werkproces ondersteunt parametertypen volgens de onderstaande tabellen. Ondersteuning voor binding met typen van Azure.Storage.Queues is in preview.

Wachtrijtrigger

De wachtrijtrigger kan worden verbonden met de volgende typen:

Type Description
string De inhoud van het bericht als een tekenreeks. Gebruik dit bericht wanneer het bericht eenvoudige tekst is..
byte[] De bytes van het bericht.
JSON serialiseerbare typen Wanneer een wachtrijbericht JSON-gegevens bevat, probeert Functions deSerialiseren van de JSON-gegevens in een poCO-type (plain-old CLR object).
QueueMessage1 Het bericht.
BinaryData1 De bytes van het bericht.

1 Als u deze typen wilt gebruiken, moet u verwijzen naar Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues 5.2.0 of hoger en de algemene afhankelijkheden voor SDK-typebindingen.

Wachtrijuitvoerbinding

Wanneer u wilt dat de functie één bericht schrijft, kan de wachtrijuitvoerbinding worden gekoppeld aan de volgende typen:

Type Description
string De inhoud van het bericht als een tekenreeks. Gebruik dit bericht wanneer het bericht eenvoudige tekst is.
byte[] De bytes van het bericht.
JSON serialiseerbare typen Een object dat de inhoud van een JSON-bericht weergeeft. Functions probeert een eenvoudig oud CLR-objecttype (POCO) te serialiseren in JSON-gegevens.

Wanneer u wilt dat de functie meerdere berichten schrijft, kan de uitvoerbinding van de wachtrij worden gekoppeld aan de volgende typen:

Type Description
T[] waarbij T een van de typen één bericht is Een matrix met inhoud voor meerdere berichten. Elk item vertegenwoordigt één bericht.

Voor andere uitvoerscenario's maakt en gebruikt u rechtstreeks typen van Azure.Storage.Queues .

host.json-instellingen

In deze sectie worden de configuratie-instellingen beschreven die beschikbaar zijn voor deze binding in versie 2.x en hoger. Instellingen in het bestand host.json van toepassing op alle functies in een exemplaar van een functie-app. Het onderstaande voorbeeld host.json bestand bevat alleen de instellingen voor versie 2.x+ voor deze binding. Zie host.json naslaginformatie voor Azure Functions voor meer informatie over configuratie-instellingen voor functie-apps in versies 2.x en latere versies.

{
    "version": "2.0",
    "extensions": {
        "queues": {
            "maxPollingInterval": "00:00:02",
            "visibilityTimeout" : "00:00:30",
            "batchSize": 16,
            "maxDequeueCount": 5,
            "newBatchThreshold": 8,
            "messageEncoding": "base64"
        }
    }
}
Eigenschappen Standaard Beschrijving
maxPollingInterval 00:01:00 Het maximale interval tussen wachtrijpeilingen. Het minimuminterval is 00:00:00.100 (100 ms). Intervallen worden verhoogd tot maxPollingInterval. De standaardwaarde maxPollingInterval is 00:01:00 (1 min). maxPollingInterval mag niet kleiner zijn dan 00:00:00.100 (100 ms). In Functions 2.x en hoger is het gegevenstype een TimeSpan. In Functions 1.x is deze in milliseconden.
visibilityTimeout 00:00:00 Het tijdsinterval tussen nieuwe pogingen bij het verwerken van een bericht mislukt.
batchSize 16 Het aantal wachtrijberichten dat de Functions-runtime tegelijkertijd ophaalt en parallel verwerkt. Wanneer het nummer dat wordt verwerkt, wordt een newBatchThresholdandere batch opgehaald en wordt deze berichten verwerkt. Het maximum aantal gelijktijdige berichten dat per functie wordt verwerkt, is batchSize dus plus newBatchThreshold. Deze limiet geldt afzonderlijk voor elke functie die door de wachtrij wordt geactiveerd.

Als u parallelle uitvoering wilt voorkomen voor berichten die in één wachtrij zijn ontvangen, kunt u instellen batchSize op 1. Deze instelling elimineert echter gelijktijdigheid zolang uw functie-app alleen wordt uitgevoerd op één virtuele machine (VM). Als de functie-app wordt uitgeschaald naar meerdere VM's, kan elke VM één exemplaar van elke door de wachtrij geactiveerde functie uitvoeren.

Het maximum batchSize is 32.
maxDequeueCount 5 Het aantal keren dat u een bericht wilt verwerken voordat u het naar de gifwachtrij verplaatst.
newBatchThreshold N*batchSize/2 Wanneer het aantal berichten dat gelijktijdig wordt verwerkt, wordt door de runtime een andere batch opgehaald.

N vertegenwoordigt het aantal vCPU's dat beschikbaar is bij het uitvoeren van App Service- of Premium-abonnementen. De waarde ervan is 1 voor het verbruiksabonnement.
messageEncoding base64 Deze instelling is alleen beschikbaar in extensiebundel versie 5.0.0 en hoger. Het vertegenwoordigt de coderingsindeling voor berichten. Geldige waarden zijn base64 en none.

Volgende stappen