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


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.

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

Ha használni szeretné ezt a kötéskiterjesztést az alkalmazásban, győződjön meg arról, hogy a projekt gyökerében található host.json fájl tartalmazza a extensionBundle következő hivatkozást:

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

Ebben a példában az version érték [4.0.0, 5.0.0) arra utasítja a Functions-gazdagépet, hogy 4.0.0 legalább, de annál kisebb 5.0.0csomagverziót használjon, amely tartalmazza a 4.x összes lehetséges verzióját. Ez a jelölés hatékonyan fenntartja az alkalmazást a v4.x bővítménycsomag legújabb elérhető alverzióján.

Ha lehetséges, a legújabb bővítménycsomag főverziót kell használnia, és engedélyeznie kell, hogy a futtatókörnyezet automatikusan fenntartsa a legújabb alverziót. A legújabb csomag tartalmát a bővítménykötegek kiadási oldalán tekintheti meg. További információ: Azure Functions-bővítménykötegek.

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 azServiceBusMessageActionsAutoCompleteMessages tulajdonságát a következőrefalse: . 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.

SDK-kötéstípusok

Az Azure Service Bus SDK-típusai előzetes verzióban érhetők el. A Service Bus-minta Python SDK-kötéseit követve ismerkedhet meg a Service Bus SDK-típusaival a Pythonban.

Fontos

Az SDK-típuskötések használatához a Python v2 programozási modell szükséges.


Kötelezettség Paramétertípusok Minták
ServiceBus-eseményindító ServiceBusReceivedMessage ServiceBusReceivedMessage

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é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.
maxkésleltetés 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 fogadnak, és nem vonatkoznak az üzenetek kötegét fogadó függvényekre. Kötegek esetén a maximális időtartam a Service Busban van beállítva az üzenetsor vagy az előfizetés szintjén.
maxConcurrentCalls 16 Alapértelmezés szerint a Functions-futtatókörnyezet egyszerre több üzenetet is feldolgoz. Ez a beállítás korlátozza a skálázott példányonként indítható visszahívások egyidejű hívásainak maximális számát. Ha az üzemeltetési csomag példányonként egynél több maggal rendelkezik, a hívások maximális száma gyakorlatilag megszorozódik a magok számával. Például egy olyan csomagban, amely két maggal rendelkező hardveren fut, az alapértelmezett beállítás 16 azt jelenti, hogy a példányonkénti egyidejű hívások maximális száma valójában 32 (vagy 2 * 16). 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, és nem kötegben.
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.

Következő lépések