Azure Queue Storage-eseményindítók és kötések az Azure Functionshez – áttekintés

Az Azure Functions új Azure Queue Storage-üzenetek létrehozásakor futtatható, és üzenetsor-üzeneteket írhat egy függvényen belül.

Művelet Típus
Függvény futtatása várólistán tárolt adatok módosításaként Eseményindító
Üzenetsor-tárolóüzenetek írása Kimeneti kötés

A bővítmény telepítése

A telepített NuGet-csomag a függvényalkalmazásban használt C# módtól függ:

A függvények izolált C# feldolgozói folyamatban futnak. További információ: Útmutató a C# Azure Functions izolált feldolgozói folyamatban való futtatásához.

A bővítmény funkciói a bővítmény verziójától függően változnak:

Ez a verzió lehetővé teszi, hogy titkos kulcs helyett identitással csatlakozzon. A függvényalkalmazások felügyelt identitásokkal való konfigurálásáról szóló oktatóanyagot az identitásalapú kapcsolatokkal rendelkező függvényalkalmazások létrehozásáról szóló oktatóanyagban tekintheti meg.

Ez a verzió lehetővé teszi az Azure.Storage.Queues-ból származó típusok kötését.

Adja hozzá a bővítményt a projekthez az 5.x-es verziójú NuGet-csomag telepítésével.

A .NET parancssori felületének használata:

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

Feljegyzés

Az Azure Blobs, az Azure Queues és az Azure Tables mostantól külön bővítményeket használ, és külön-külön hivatkoznak gombra. Ha például az eseményindítókat és kötéseket az izolált .NET-alkalmazás mindhárom szolgáltatásához szeretné használni, a következő csomagokat kell hozzáadnia a projekthez:

Korábban a Microsoft.Azure.Functions.Worker.Extensions.Storage 4.x verziójú bővítmények együtt szállították. Ugyanez a csomag egy 5.x verzióval is rendelkezik, amely csak a blobok és üzenetsorok osztott csomagjaira hivatkozik. A csomaghivatkozások régebbi verziókról való frissítésekor ezért előfordulhat, hogy az új Microsoft.Azure.Functions.Worker.Extensions.Tables NuGet csomagra is hivatkoznia kell. Az újabb felosztott csomagokra való hivatkozáskor győződjön meg arról is, hogy nem hivatkozik a kombinált tárolócsomag régebbi verziójára, mivel ez ütközéseket eredményez ugyanazon kötések két definíciójából.

Csomag telepítése

A Blob Storage-kötés egy bővítménycsomag része, amely a host.json projektfájlban van megadva. Előfordulhat, hogy módosítania kell ezt a csomagot a kötés verziójának módosításához, vagy ha a csomagok még nincsenek telepítve. További információkért tekintse meg a bővítménycsomagot.

Ez a verzió lehetővé teszi, hogy titkos kulcs helyett identitással csatlakozzon. A függvényalkalmazások felügyelt identitásokkal való konfigurálásáról szóló oktatóanyagot az identitásalapú kapcsolatokkal rendelkező függvényalkalmazások létrehozásáról szóló oktatóanyagban tekintheti meg.

A bővítmény ezen verzióját a 3. verziójú előzetes verziójú bővítménycsomagból is hozzáadhatja, ha hozzáadja vagy lecseréli a következő kódot a host.json fájlban:

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

További információ: Bővítmények frissítése.

Kötéstípusok

A .NET-hez támogatott kötéstípusok a bővítményverziótól és a C# végrehajtási módtól is függenek, ami az alábbiak egyike lehet:

A C# függvényt lefordított izolált feldolgozói folyamatosztály-kódtár a futtatókörnyezettől elkülönített folyamatban fut.

Válasszon ki egy verziót a mód és a verzió kötéstípusának részleteinek megtekintéséhez.

Az izolált feldolgozó folyamat az alábbi táblázatoknak megfelelően támogatja a paramétertípusokat. Az Azure.Storage.Queues típusokhoz való kötésének támogatása előzetes verzióban érhető el.

Üzenetsor-eseményindító

Az üzenetsor-eseményindító a következő típusokhoz tud kapcsolódni:

Típus Leírás
string Az üzenet tartalma sztringként. Akkor használja, ha az üzenet egyszerű szöveg.
byte[] Az üzenet bájtja.
JSON szerializálható típusok Ha egy üzenetsor JSON-adatokat tartalmaz, a Functions megpróbálja deszerializálni a JSON-adatokat egy egyszerű régi CLR-objektum (POCO) típusba.
QueueMessage1 Az üzenet.
BinaryData1 Az üzenet bájtja.

1 Ezeknek a típusoknak a használatához hivatkoznia kell a Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues 5.2.0-s vagy újabb verziójára, valamint az SDK-típuskötések gyakori függőségeire.

Üzenetsor kimeneti kötése

Ha azt szeretné, hogy a függvény egyetlen üzenetet írjon, az üzenetsor kimeneti kötése a következő típusokhoz köthető:

Típus Leírás
string Az üzenet tartalma sztringként. Akkor használja, ha az üzenet egyszerű szöveg.
byte[] Az üzenet bájtja.
JSON szerializálható típusok Egy JSON-üzenet tartalmát képviselő objektum. A Functions egy egyszerű régi CLR-objektum (POCO) típust próbál JSON-adatokká szerializálni.

Ha azt szeretné, hogy a függvény több üzenetet írjon, az üzenetsor kimeneti kötése a következő típusokhoz kapcsolódhat:

Típus Leírás
T[] hol T található az egyetlen üzenettípus Több üzenet tartalmát tartalmazó tömb. Minden bejegyzés egy üzenetet jelöl.

Egyéb kimeneti forgatókönyvek esetén közvetlenül hozzon létre és használjon típusokat az Azure.Storage.Queues szolgáltatásból.

host.json beállítások

Ez a szakasz a kötéshez elérhető konfigurációs beállításokat ismerteti a 2.x és újabb verziókban. Gépház a host.json fájlban egy függvényalkalmazás-példány összes függvényére vonatkozik. Az alábbi példában host.json fájl csak a kötés 2.x+ verziójának beállításait tartalmazza. A függvényalkalmazások konfigurációs beállításairól a 2.x és újabb verziókban host.json Azure Functionsre vonatkozó hivatkozásban talál további információt.

Feljegyzés

A Host.json a Functions 1.x-ben az Azure Functions 1.x host.json referenciájában talál.

{
    "version": "2.0",
    "extensions": {
        "queues": {
            "maxPollingInterval": "00:00:02",
            "visibilityTimeout" : "00:00:30",
            "batchSize": 16,
            "maxDequeueCount": 5,
            "newBatchThreshold": 8,
            "messageEncoding": "base64"
        }
    }
}
Tulajdonság Alapértelmezett Leírás
maxPollingInterval 00:01:00 Az üzenetsor-szavazások közötti maximális időköz. A minimális időköz 00:00:00.100 (100 ms). Az intervallumok legfeljebb maxPollingInterval. Az alapértelmezett érték maxPollingInterval 00:01:00 (1 perc). maxPollingInterval nem lehet kisebb, mint 00:00:00.100 (100 ms). A Functions 2.x és újabb verzióiban az adattípus egy TimeSpan. A Functions 1.x-ben ezredmásodpercben van.
visibilityTimeout 00:00:00 Az újrapróbálkozások közötti időintervallum, amikor az üzenet feldolgozása meghiúsul.
batchSize 16 Azon üzenetsor-üzenetek száma, amelyeket a Functions-futtatókörnyezet egyszerre kér le, és párhuzamosan dolgozik fel. Amikor a feldolgozott szám lekerül a newBatchThresholdmegadott értékre, a futtatókörnyezet újabb köteget kap, és megkezdi az üzenetek feldolgozását. Így az egyidejűleg feldolgozott üzenetek maximális száma függvényenként batchSize plusz newBatchThreshold. Ez a korlát külön vonatkozik az egyes üzenetsor által aktivált függvényekre.

Ha el szeretné kerülni az egy üzenetsoron fogadott üzenetek párhuzamos végrehajtását, beállíthatja az 1 értéket batchSize . Ez a beállítás azonban kiküszöböli az egyidejűséget mindaddig, amíg a függvényalkalmazás csak egyetlen virtuális gépen (virtuális gépen) fut. Ha a függvényalkalmazás több virtuális gépre skálázódik, minden virtuális gép futtathat egy példányt az egyes üzenetsor által aktivált függvények közül.

A maximális érték batchSize 32.
maxDequeueCount 5 Az üzenetek feldolgozásának hányszoros száma, mielőtt áthelyezi azt a méregsorba.
newBatchThreshold N*batchSize/2 Amikor az egyidejűleg feldolgozott üzenetek száma erre a számra csökken, a futtatókörnyezet egy másik köteget kér le.

N Az App Service-en vagy Prémium csomagokon való futtatáskor elérhető vCPU-k számát jelöli. Értéke 1 a használati tervhez tartozik.
messageEncoding base64 Ez a beállítás csak az 5.0.0-s és újabb verziójú bővítménycsomagokban érhető el. Az üzenetek kódolási formátumát jelöli. Az érvényes értékek a következők: base64 és none.

Következő lépések