Olvasás angol nyelven

Megosztás a következőn keresztül:


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

Válasszon egy programozási nyelvet

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.

Ez a verzió támogatja az eseményindítók és kötések konfigurálását a .NET Aspire integráción keresztül.

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:

JSON
{
    "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 hozzon létre és használjon közvetlenül egy ServiceBusClientet más típusokkal az Azure.Messaging.ServiceBus szolgáltatásból. Tekintse meg az Azure-ügyfelek regisztrálását a függőséginjektálás használatával egy ügyféltípus Azure SDK-ból való létrehozásához.

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.

JSON
{
    "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ésé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