Azure Service Bus-kötések az Azure Functionshez

Az Azure Functions triggereken és kötéseken keresztül integrálható az Azure Service Bus szolgáltatással. A Service Bus használatával integrálva olyan függvényeket hozhat létre, amelyek üzenetsor- vagy témakörüzeneteket küldenek és reagálnak rá.

Művelet Típus
Függvény futtatása Service Bus-üzenetsor vagy témakörüzenet létrehozásakor Eseményindító
Azure Service Bus-üzenetek küldése 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.

Adja hozzá a bővítményt a nuGet-csomagot telepítő projekthez.

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.Messaging.ServiceBus-ból származó típusokhoz való kötést.

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

Csomag telepítése

A Service Bus-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ú 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.

Service Bus-eseményindító

Ha azt szeretné, hogy a függvény egyetlen üzenetet dolgoz fel, a Service Bus-eseményindító a következő típusokhoz kapcsolódhat:

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

Ha a kötéshezServiceBusReceivedMessage, a ServiceBusMessageActions1,2 típusú paramétert is megadhat az üzenetegyeztetési műveletek végrehajtásához.

Ha azt szeretné, hogy a függvény feldolgozza az üzenetek kötegét, a Service Bus-eseményindító a következő típusokhoz tud csatlakozni:

Típus Leírás
T[] hol T található az egyetlen üzenettípus A kötegből származó események tömbje. Minden bejegyzés egy eseményt jelöl.

Ha a kötéshezServiceBusReceivedMessage[], a ServiceBusMessageActions1,2 típusú paramétert is megadhat az üzenetegyeztetési műveletek végrehajtásához.

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

2 Használata esetén állítsa azAutoCompleteMessageseseményindító attribútum tulajdonságát a következőrefalseServiceBusMessageActions: . Ez megakadályozza, hogy a futtatókörnyezet megkíséreljen üzeneteket végrehajtani egy sikeres függvényhívás után.

Service Bus kimeneti kötés

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

Típus Leírás
string Az üzenet sztringként. Akkor használja, ha az üzenet egyszerű szöveg.
byte[] Az üzenet bájtja.
JSON szerializálható típusok Az üzenetet jelképező 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, a Service Bus 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 üzenetet 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.Messaging.ServiceBus 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, amelyek a futtatókörnyezettől és a bővítmény verziójától függnek.

{
    "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
        }
    }
}

A clientRetryOptions beállítások csak a Service Bus szolgáltatással folytatott interakciókra vonatkoznak. Nem befolyásolják a függvényvégrehajtások újrapróbálkozását. További információ: Újrapróbálkozás.

Tulajdonság Alapértelmezett Leírás
mód Exponential Az újrapróbálkozási késések kiszámításának módszere. Az alapértelmezett exponenciális mód késleltetéssel próbálja meg újrapróbálkozásokat egy olyan háttérstratégia alapján, amelyben minden kísérlet növeli a várakozási időtartamot az újrapróbálkozás előtt. A Fixed mód újrapróbálkozásait rögzített időközönként kísérli meg, és minden késleltetésnek konzisztens időtartamúnak kell lennie.
tryTimeout 00:01:00 A művelet próbálkozásonkénti várakozásának maximális időtartama.
Késleltetés 00:00:00.80 Az újrapróbálkozási kísérletek közötti alkalmazás késleltetési vagy visszalépési tényezője.
maxDelay 00:01:00 Az újrapróbálkozási kísérletek közötti maximális késleltetés
maxRetries 3 Az újrapróbálkozások maximális száma, mielőtt a társított művelet sikertelennek tekintené.
prefetchCount 0 Lekéri vagy beállítja az üzenet fogadója által egyidejűleg kérhető üzenetek számát.
transportType amqpTcp A Service Bus szolgáltatással való kommunikációhoz használt protokoll és átvitel. Elérhető lehetőségek: amqpTcp, amqpWebSockets
webProxy n.a. A Service Bus webes szoftvercsatornákon keresztüli kommunikációjához használható proxy. Az átvitelhez amqpTcp nem használható proxy.
autoCompleteMessages true Meghatározza, hogy a függvény sikeres végrehajtása után automatikusan befejezze-e az üzeneteket.
maxAutoLockRenewalDuration 00:05:00 Az az időtartam, amelyen belül az üzenet zárolása automatikusan megújul. Ez a beállítás csak azokra a függvényekre vonatkozik, amelyek egyszerre egyetlen üzenetet kapnak.
maxConcurrentCalls 16 A visszahívásra irányuló egyidejű hívások maximális száma, amelyet skálázott példányonként kell kezdeményezni. Alapértelmezés szerint a Functions-futtatókörnyezet egyszerre több üzenetet is feldolgoz. Ezt a beállítást csak akkor használja a rendszer, ha az isSessionsEnabled eseményindító tulajdonsága vagy attribútuma a következőre falsevan állítva: . Ez a beállítás csak azokra a függvényekre vonatkozik, amelyek egyszerre egyetlen üzenetet kapnak.
maxConcurrentSessions 8 Az egy skálázott példányonként egyidejűleg kezelhető munkamenetek maximális száma. Ezt a beállítást csak akkor használja a rendszer, ha az isSessionsEnabled eseményindító tulajdonsága vagy attribútuma a következőre truevan állítva: . Ez a beállítás csak azokra a függvényekre vonatkozik, amelyek egyszerre egyetlen üzenetet kapnak.
maxMessageBatchSize 1000 Az egyes függvényhívások számára továbbított üzenetek maximális száma. Ez a beállítás csak azokra a függvényekre vonatkozik, amelyek üzenetek kötegét fogadják.
minMessageBatchSize1 1 A kötegben kívánt üzenetek minimális száma. A minimum csak akkor érvényes, ha a függvény több üzenetet fogad, és kisebbnek kell lennie.maxMessageBatchSize
A minimális méret nem szigorúan garantált. Egy részleges köteg akkor lesz elküldve, ha a teljes köteg nem készíthető el a maxBatchWaitTime leteltéig.
maxBatchWaitTime1 00:00:30 Az a maximális időköz, amelyet az eseményindítónak várnia kell egy köteg kitöltésére a függvény meghívása előtt. A várakozási idő csak akkor számítható ki, ha minMessageBatchSize nagyobb, mint 1, és máskülönben figyelmen kívül hagyja. Ha a várakozási idő eltelte előtt kevesebb minMessageBatchSize üzenet érhető el, a függvény részleges köteggel lesz meghívva. A leghosszabb engedélyezett várakozási idő az entitásüzenet zárolási időtartamának 50%-a, ami azt jelenti, hogy a maximálisan engedélyezett időtartam 2 perc és 30 másodperc. Ellenkező esetben zárolási kivételeket kaphat.

MEGJEGYZÉS: Ez az intervallum nem garantálja a függvény meghívásának pontos időzítését. Az időzítő pontossága miatt kis hibahatár van érvényben.
sessionIdleTimeout n.a. Az aktuális aktív munkamenetre vonatkozó üzenet fogadásának maximális időtartama. Az idő eltelte után a munkamenet bezárul, és a függvény megpróbál egy másik munkamenetet feldolgozni.
enableCrossEntityTransactions false Engedélyezheti-e a Service Bus-névtér több entitását felölelő tranzakciókat.

1 A csomag 5.10.0-s vagy újabb verziójának használata minMessageBatchSize és maxBatchWaitTime megköveteléseMicrosoft.Azure.WebJobs.Extensions.ServiceBus.

Következő lépések