Azure Service Bus-eseményindító az Azure Functionshez

A Service Bus-eseményindítóval válaszolhat a Service Bus üzenetsorából vagy témaköréből érkező üzenetekre. A 3.1.0-s verziójú bővítménytől kezdve elindíthat egy munkamenet-kompatibilis üzenetsort vagy témakört.

A beállítással és a konfigurációval kapcsolatos információkért tekintse meg az áttekintést.

A Service Bus használati és prémium csomagokkal kapcsolatos skálázási döntései célalapú skálázáson alapulnak. További információ: Célalapú skálázás.

Fontos

Ez a cikk lapokat használ a Node.js programozási modell több verziójának támogatásához. A v4-modell általánosan elérhető, és úgy lett kialakítva, hogy rugalmasabb és intuitívabb felhasználói élményt nyújtson JavaScript- és TypeScript-fejlesztők számára. A v4-modell működésével kapcsolatos további információkért tekintse meg az Azure Functions Node.js fejlesztői útmutatóját. A v3 és a v4 közötti különbségekről a migrálási útmutatóban olvashat bővebben.

Az Azure Functions két Python-programozási modellt támogat. A kötések definiálásának módja a választott programozási modelltől függ.

A Python v2 programozási modell lehetővé teszi, hogy a kötéseket dekorátorokkal definiálja közvetlenül a Python-függvénykódban. További információt a Python fejlesztői útmutatójában talál.

Ez a cikk mindkét programozási modellt támogatja.

Példa

A C#-függvények a következő C#-módok egyikével hozhatók létre:

  • Izolált feldolgozómodell: Lefordított C# függvény, amely a futtatókörnyezettől elkülönített feldolgozói folyamatban fut. Izolált feldolgozói folyamat szükséges az LTS- és nem LTS-verziókon futó C#-függvények támogatásához .NET és .NET-keretrendszer. Az izolált feldolgozói folyamatfüggvények bővítményei névtereket használnak Microsoft.Azure.Functions.Worker.Extensions.* .
  • Folyamaton belüli modell: Lefordított C# függvény, amely ugyanabban a folyamatban fut, mint a Functions-futtatókörnyezet. A modell egy változatában a Functions C#-szkriptekkel futtatható, amely elsősorban a C#-portál szerkesztéséhez támogatott. A folyamaton belüli függvények bővítményei névtereket használnak Microsoft.Azure.WebJobs.Extensions.* .

Ez a kód határozza meg és inicializálja a következőt ILogger:

private readonly ILogger<ServiceBusReceivedMessageFunctions> _logger;

public ServiceBusReceivedMessageFunctions(ILogger<ServiceBusReceivedMessageFunctions> logger)
{
    _logger = logger;
}

Ez a példa egy C# függvényt mutat be, amely egyetlen Service Bus-üzenetsort fogad, és a naplókba írja:

[Function(nameof(ServiceBusReceivedMessageFunction))]
[ServiceBusOutput("outputQueue", Connection = "ServiceBusConnection")]
public string ServiceBusReceivedMessageFunction(
    [ServiceBusTrigger("queue", Connection = "ServiceBusConnection")] ServiceBusReceivedMessage message)
{
    _logger.LogInformation("Message ID: {id}", message.MessageId);
    _logger.LogInformation("Message Body: {body}", message.Body);
    _logger.LogInformation("Message Content-Type: {contentType}", message.ContentType);

    var outputMessage = $"Output message created at {DateTime.Now}";
    return outputMessage;
}

Ez a példa egy C# függvényt mutat be, amely több Service Bus-üzenetsor-üzenetet fogad egyetlen kötegben, és mindegyiket a naplókba írja:

[Function(nameof(ServiceBusReceivedMessageBatchFunction))]
public void ServiceBusReceivedMessageBatchFunction(
    [ServiceBusTrigger("queue", Connection = "ServiceBusConnection", IsBatched = true)] ServiceBusReceivedMessage[] messages)
{
    foreach (ServiceBusReceivedMessage message in messages)
    {
        _logger.LogInformation("Message ID: {id}", message.MessageId);
        _logger.LogInformation("Message Body: {body}", message.Body);
        _logger.LogInformation("Message Content-Type: {contentType}", message.ContentType);
    }
}

Ez a példa egy C# függvényt mutat be, amely több Service Bus-üzenetsor-üzenetet fogad, a naplókba írja, majd befejezettként rendezi az üzenetet:

[Function(nameof(ServiceBusMessageActionsFunction))]
public async Task ServiceBusMessageActionsFunction(
    [ServiceBusTrigger("queue", Connection = "ServiceBusConnection", AutoCompleteMessages = false)]
    ServiceBusReceivedMessage message,
    ServiceBusMessageActions messageActions)
{
    _logger.LogInformation("Message ID: {id}", message.MessageId);
    _logger.LogInformation("Message Body: {body}", message.Body);
    _logger.LogInformation("Message Content-Type: {contentType}", message.ContentType);

    // Complete the message
    await messageActions.CompleteMessageAsync(message);
}

Az alábbi Java-függvény a @ServiceBusQueueTrigger Java-függvények futtatókörnyezeti kódtárának megjegyzésével írja le a Service Bus-üzenetsor-eseményindító konfigurációját. A függvény megragadja az üzenetsorra helyezett üzenetet, és hozzáadja a naplókhoz.

@FunctionName("sbprocessor")
 public void serviceBusProcess(
    @ServiceBusQueueTrigger(name = "msg",
                             queueName = "myqueuename",
                             connection = "myconnvarname") String message,
   final ExecutionContext context
 ) {
     context.getLogger().info(message);
 }

A Java-függvények akkor is aktiválhatók, ha egy üzenet bekerül egy Service Bus-témakörbe. Az alábbi példa a @ServiceBusTopicTrigger széljegyzetet használja az eseményindító konfigurációjának leírására.

@FunctionName("sbtopicprocessor")
    public void run(
        @ServiceBusTopicTrigger(
            name = "message",
            topicName = "mytopicname",
            subscriptionName = "mysubscription",
            connection = "ServiceBusConnection"
        ) String message,
        final ExecutionContext context
    ) {
        context.getLogger().info(message);
    }

Az alábbi példa egy Service Bus-eseményindító TypeScript-függvényét mutatja be. A függvény felolvassa az üzenet metaadatait , és naplóz egy Service Bus-üzenetsort.

import { app, InvocationContext } from '@azure/functions';

export async function serviceBusQueueTrigger1(message: unknown, context: InvocationContext): Promise<void> {
    context.log('Service bus queue function processed message:', message);
    context.log('EnqueuedTimeUtc =', context.triggerMetadata.enqueuedTimeUtc);
    context.log('DeliveryCount =', context.triggerMetadata.deliveryCount);
    context.log('MessageId =', context.triggerMetadata.messageId);
}

app.serviceBusQueue('serviceBusQueueTrigger1', {
    connection: 'MyServiceBusConnection',
    queueName: 'testqueue',
    handler: serviceBusQueueTrigger1,
});

Az alábbi példa egy Service Bus-eseményindító JavaScript-függvényt mutat be. A függvény felolvassa az üzenet metaadatait , és naplóz egy Service Bus-üzenetsort.

const { app } = require('@azure/functions');

app.serviceBusQueue('serviceBusQueueTrigger1', {
    connection: 'MyServiceBusConnection',
    queueName: 'testqueue',
    handler: (message, context) => {
        context.log('Service bus queue function processed message:', message);
        context.log('EnqueuedTimeUtc =', context.triggerMetadata.enqueuedTimeUtc);
        context.log('DeliveryCount =', context.triggerMetadata.deliveryCount);
        context.log('MessageId =', context.triggerMetadata.messageId);
    },
});

Az alábbi példa egy Service Bus-eseményindító-kötést mutat be egy function.json fájlban és egy PowerShell-függvényben , amely a kötést használja.

A kötési adatok a function.json fájlban:

{
  "bindings": [
    {
      "name": "mySbMsg",
      "type": "serviceBusTrigger",
      "direction": "in",
      "topicName": "mytopic",
      "subscriptionName": "mysubscription",
      "connection": "AzureServiceBusConnectionString"
    }
  ]
}

Az alábbi függvény a Service Bus-üzenet küldésekor fut.

param([string] $mySbMsg, $TriggerMetadata)

Write-Host "PowerShell ServiceBus queue trigger function processed message: $mySbMsg"

Az alábbi példa bemutatja, hogyan olvasható be egy Service Bus-üzenetsor üzenete egy eseményindítón keresztül. A példa attól függ, hogy a v1 vagy v2 Python programozási modellt használja-e.

import logging
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="ServiceBusQueueTrigger1")
@app.service_bus_queue_trigger(arg_name="msg", 
                               queue_name="<QUEUE_NAME>", 
                               connection="<CONNECTION_SETTING>")
def test_function(msg: func.ServiceBusMessage):
    logging.info('Python ServiceBus queue trigger processed message: %s',
                 msg.get_body().decode('utf-8'))

Az alábbi példa bemutatja, hogyan olvasható be egy Service Bus-üzenetsor témaköre egy eseményindítón keresztül.

import logging
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="ServiceBusTopicTrigger1")
@app.service_bus_topic_trigger(arg_name="message", 
                               topic_name="TOPIC_NAME", 
                               connection="CONNECTION_SETTING", 
                               subscription_name="SUBSCRIPTION_NAME")
def test_function(message: func.ServiceBusMessage):
    message_body = message.get_body().decode("utf-8")
    logging.info("Python ServiceBus topic trigger processed message.")
    logging.info("Message Body: " + message_body)

Attribútumok

A folyamaton belüli és az izolált feldolgozói folyamat C# kódtárai a ServiceBusTriggerAttribute attribútumot használják a függvény eseményindítójának meghatározásához. A C#-szkript ehelyett egy function.json konfigurációs fájlt használ a C#-szkriptelési útmutatóban leírtak szerint.

Az alábbi táblázat az eseményindító attribútummal beállítható tulajdonságokat ismerteti:

Tulajdonság Leírás
QueueName A monitorozni kívánt üzenetsor neve. Csak üzenetsor figyelése esetén állítsa be, nem témakörhöz.
TopicName A figyelendő témakör neve. Csak akkor állítsa be, ha figyel egy témakört, nem üzenetsorhoz.
SubscriptionName A monitorozni kívánt előfizetés neve. Csak akkor állítsa be, ha figyel egy témakört, nem üzenetsorhoz.
Kapcsolat A Service Bushoz való csatlakozás módját meghatározó alkalmazásbeállítás vagy beállításgyűjtemény neve. Lásd: Csatlakozás ions.
IsBatched Az üzenetek kötegekben érkeznek. Tömb- vagy gyűjteménytípust igényel.
IsSessionsEnabled trueha munkamenet-tudatos üzenetsorhoz vagy előfizetéshez csatlakozik. false ellenkező esetben ez az alapértelmezett érték.
AutoCompleteMessages true ha az eseményindítónak egy sikeres meghívás után automatikusan be kell fejeznie az üzenetet. false ha nem kellene, például amikor kódban kezeli az üzenetegyeztetéseket. Ha nincs explicit módon beállítva, a viselkedés a autoCompleteMessages következő konfiguráción host.jsonfog alapulni: .

Helyi fejlesztéskor adja hozzá az alkalmazásbeállításokat a gyűjtemény local.settings.json fájljáhozValues.

Dekorátorok

Csak a Python v2 programozási modellre vonatkozik.

A dekoratőrrel definiált Python v2-függvények esetében a következő tulajdonságok a service_bus_queue_triggerkövetkezők:

Tulajdonság Leírás
arg_name Annak a változónak a neve, amely az üzenetsort vagy a témakörüzenetet jelöli a függvénykódban.
queue_name A monitorozni kívánt üzenetsor neve. Csak üzenetsor figyelése esetén állítsa be, nem témakörhöz.
connection A Service Bushoz való csatlakozás módját meghatározó alkalmazásbeállítás vagy beállításgyűjtemény neve. Lásd: Csatlakozás ions.

A function.json használatával definiált Python-függvények esetében lásd a Konfiguráció szakaszt.

Jegyzetek

A ServiceBusQueueTrigger széljegyzet lehetővé teszi egy Service Bus-üzenet létrehozásakor futó függvény létrehozását. Az elérhető konfigurációs beállítások a következő tulajdonságokat tartalmazzák:

Tulajdonság Leírás
név Annak a változónak a neve, amely az üzenetsort vagy a témakörüzenetet jelöli a függvénykódban.
queueName A monitorozni kívánt üzenetsor neve. Csak üzenetsor figyelése esetén állítsa be, nem témakörhöz.
topicName A figyelendő témakör neve. Csak akkor állítsa be, ha figyel egy témakört, nem üzenetsorhoz.
subscriptionName A monitorozni kívánt előfizetés neve. Csak akkor állítsa be, ha figyel egy témakört, nem üzenetsorhoz.
Kapcsolat A Service Bushoz való csatlakozás módját meghatározó alkalmazásbeállítás vagy beállításgyűjtemény neve. Lásd: Csatlakozás ions.

A ServiceBusTopicTrigger széljegyzet lehetővé teszi, hogy kijelöljön egy témakört és előfizetést, amely megcélozza, hogy mely adatok aktiválják a függvényt.

Helyi fejlesztéskor adja hozzá az alkalmazásbeállításokat a gyűjtemény local.settings.json fájljáhozValues.

További részletekért tekintse meg az eseményindító példáját .

Konfiguráció

Csak a Python v1 programozási modellre vonatkozik.

Az alábbi táblázat ismerteti azokat a tulajdonságokat, amelyeket az options adott vagy metódusnak app.serviceBusQueue()app.serviceBusTopic() átadott objektumon beállíthat.

Tulajdonság Leírás
queueName A monitorozni kívánt üzenetsor neve. Csak üzenetsor figyelése esetén állítsa be, nem témakörhöz.
topicName A figyelendő témakör neve. Csak akkor állítsa be, ha figyel egy témakört, nem üzenetsorhoz.
subscriptionName A monitorozni kívánt előfizetés neve. Csak akkor állítsa be, ha figyel egy témakört, nem üzenetsorhoz.
Kapcsolat A Service Bushoz való csatlakozás módját meghatározó alkalmazásbeállítás vagy beállításgyűjtemény neve. Lásd: Csatlakozás ions.
accessRights A kapcsolati sztring hozzáférési jogosultságai. A rendelkezésre álló értékek és listena manage . Az alapértelmezett érték azmanage, amely azt jelzi, hogy a connection kezelés engedéllyel rendelkezik. Ha olyan kapcsolati sztring használ, amely nem rendelkezik a Kezelés engedéllyel, állítsa be a "figyelés" elemetaccessRights. Ellenkező esetben előfordulhat, hogy a Functions-futtatókörnyezet nem próbál meg olyan műveleteket végrehajtani, amelyek felügyeleti jogosultságokat igényelnek. Az Azure Functions 2.x és újabb verziójában ez a tulajdonság nem érhető el, mert a Service Bus SDK legújabb verziója nem támogatja a műveletek kezelését.
isSessionsEnabled trueha munkamenet-tudatos üzenetsorhoz vagy előfizetéshez csatlakozik. false ellenkező esetben ez az alapértelmezett érték.
Automatikus Nem C#-függvényekhez kell lennie true , ami azt jelenti, hogy az eseményindítónak automatikusan teljesnek kell lennie a feldolgozás után, vagy a függvénykódnak manuálisan kell befejezettnek lennie.

Ha be van trueállítva, az eseményindító automatikusan befejezi az üzenetet, ha a függvény végrehajtása sikeresen befejeződik, és ellenkező esetben megszakítja az üzenetet.

A függvény kivételei a háttérben futó futtatókörnyezeti hívásokat abandonAsync eredményeznek. Ha nem történik kivétel, a completeAsync rendszer meghívja a háttérben. Ez a tulajdonság csak az Azure Functions 2.x és újabb verzióiban érhető el.

Helyi fejlesztéskor adja hozzá az alkalmazásbeállításokat a gyűjtemény local.settings.json fájljáhozValues.

Az alábbi táblázat a function.json fájlban beállított kötéskonfigurációs tulajdonságokat ismerteti.

function.json tulajdonság Leírás
type A beállításnak a serviceBusTriggerkövetkezőnek kell lennie: . Ez a tulajdonság automatikusan be van állítva, amikor létrehozza az eseményindítót az Azure Portalon.
direction "in" értékre kell állítani. Ez a tulajdonság automatikusan be van állítva, amikor létrehozza az eseményindítót az Azure Portalon.
név Annak a változónak a neve, amely az üzenetsort vagy a témakörüzenetet jelöli a függvénykódban.
queueName A monitorozni kívánt üzenetsor neve. Csak üzenetsor figyelése esetén állítsa be, nem témakörhöz.
topicName A figyelendő témakör neve. Csak akkor állítsa be, ha figyel egy témakört, nem üzenetsorhoz.
subscriptionName A monitorozni kívánt előfizetés neve. Csak akkor állítsa be, ha figyel egy témakört, nem üzenetsorhoz.
Kapcsolat A Service Bushoz való csatlakozás módját meghatározó alkalmazásbeállítás vagy beállításgyűjtemény neve. Lásd: Csatlakozás ions.
accessRights A kapcsolati sztring hozzáférési jogosultságai. A rendelkezésre álló értékek és listena manage . Az alapértelmezett érték azmanage, amely azt jelzi, hogy a connection kezelés engedéllyel rendelkezik. Ha olyan kapcsolati sztring használ, amely nem rendelkezik a Kezelés engedéllyel, állítsa be a "figyelés" elemetaccessRights. Ellenkező esetben előfordulhat, hogy a Functions-futtatókörnyezet nem próbál meg olyan műveleteket végrehajtani, amelyek felügyeleti jogosultságokat igényelnek. Az Azure Functions 2.x és újabb verziójában ez a tulajdonság nem érhető el, mert a Service Bus SDK legújabb verziója nem támogatja a műveletek kezelését.
isSessionsEnabled trueha munkamenet-tudatos üzenetsorhoz vagy előfizetéshez csatlakozik. false ellenkező esetben ez az alapértelmezett érték.
Automatikus Nem C#-függvényekhez kell lennie true , ami azt jelenti, hogy az eseményindítónak automatikusan teljesnek kell lennie a feldolgozás után, vagy a függvénykódnak manuálisan kell befejezettnek lennie.

Ha be van trueállítva, az eseményindító automatikusan befejezi az üzenetet, ha a függvény végrehajtása sikeresen befejeződik, és ellenkező esetben megszakítja az üzenetet.

A függvény kivételei a háttérben futó futtatókörnyezeti hívásokat abandonAsync eredményeznek. Ha nem történik kivétel, a completeAsync rendszer meghívja a háttérben. Ez a tulajdonság csak az Azure Functions 2.x és újabb verzióiban érhető el.

Helyi fejlesztéskor adja hozzá az alkalmazásbeállításokat a gyűjtemény local.settings.json fájljáhozValues.

A teljes példákért tekintse meg a Példa szakaszt .

Használat

Az alábbi paramétertípusokat minden C#-mód és bővítményverzió támogatja:

Típus Leírás
System.String Akkor használja, ha az üzenet egyszerű szöveg.
bájt[] Bináris adatüzenetekhez használható.
Objektum Ha egy üzenet JSON-t tartalmaz, a Functions megpróbálja deszerializálni a JSON-adatokat ismert régi CLR-objektumtípussá.

Az üzenetspecifikus paramétertípusok további üzenet metaadatokat tartalmaznak. A Service Bus-eseményindító által támogatott konkrét típusok a Functions futtatókörnyezet verziójától, a bővítménycsomag verziójától és a használt C# módtól függnek.

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.

Ha a tulajdonság nincs definiálva, a Connection Functions egy névvel ellátott AzureWebJobsServiceBusalkalmazásbeállítást keres, amely a Service Bus kapcsolati sztring alapértelmezett neve. A tulajdonságot úgy is beállíthatjaConnection, hogy megadja a Service Bus kapcsolati sztring tartalmazó alkalmazásbeállítás nevét.

A bejövő Service Bus-üzenet egy ServiceBusQueueMessage vagy ServiceBusTopicMessage paraméteren keresztül érhető el.

Az üzenetsor vagy a témakör üzenetének elérése a függvény első argumentumaként. A Service Bus-üzenet sztringként vagy JSON-objektumként kerül a függvénybe.

A Service Bus-példány a function.json fájl névtulajdonságában konfigurált paraméteren keresztül érhető el.

Az üzenetsor üzenete a függvény számára egy olyan paraméteren keresztül érhető el, amely a következőként func.ServiceBusMessagevan begépelve: . A Service Bus-üzenet sztringként vagy JSON-objektumként kerül a függvénybe.

A teljes példáért tekintse meg a példák szakaszt.

Kapcsolatok

A connection tulajdonság a környezeti konfigurációra mutató hivatkozás, amely meghatározza, hogy az alkalmazásnak hogyan kell csatlakoznia a Service Bushoz. A következőt határozhatja meg:

Ha a konfigurált érték egy adott beállítás pontos egyezése, a többi beállítás előtagja pedig egyezik, akkor a rendszer a pontos egyezést használja.

Kapcsolati sztring

A kapcsolati sztring beszerzéséhez kövesse a felügyeleti hitelesítő adatok lekérése című témakörben ismertetett lépéseket. A kapcsolati sztring egy Service Bus-névtérhez kell, hogy legyen, nem csak egy adott üzenetsorhoz vagy témakörhöz.

Ezt a kapcsolati sztring a kötéskonfiguráció tulajdonsága által connection megadott értéknek megfelelő névvel rendelkező alkalmazásbeállításban kell tárolni.

Ha az alkalmazásbeállítás neve az "AzureWebJobs" névvel kezdődik, csak a név fennmaradó részét adhatja meg. Ha például a "MyServiceBus" értékre van állítva connection , a Functions-futtatókörnyezet egy "AzureWebJobsMyServiceBus" nevű alkalmazásbeállítást keres. Ha üresen hagyjaconnection, a Functions-futtatókörnyezet az alapértelmezett Service Bus-kapcsolati sztring használja az "AzureWebJobsServiceBus" nevű alkalmazásbeállításban.

Identitásalapú kapcsolatok

Ha a bővítmény 5.x vagy újabb verzióját használja, ahelyett, hogy titkos kapcsolati sztring használ, az alkalmazás Microsoft Entra-identitást használhat. Ehhez meg kell határoznia a beállításokat egy közös előtag alatt, amely leképezi a connection tulajdonságot az eseményindító és a kötés konfigurációjában.

Ebben a módban a bővítményhez a következő tulajdonságok szükségesek:

Tulajdonság Környezeti változó sablonja Leírás Példaérték
Teljes névtér <CONNECTION_NAME_PREFIX>__fullyQualifiedNamespace A teljes Service Bus-névtér. <>service_bus_namespace.servicebus.windows.net

További tulajdonságok is beállíthatók a kapcsolat testreszabásához. Tekintse meg az identitásalapú kapcsolatok gyakori tulajdonságait.

Feljegyzés

Ha Azure-alkalmazás konfigurációt vagy Key Vaultot használ a felügyelt identitáskapcsolatok beállításainak megadásához, a beállítások neveinek egy érvényes kulcselválasztót kell használniuk, például : a __ helyett, / hogy a nevek megfelelően legyenek feloldva.

Például: <CONNECTION_NAME_PREFIX>:fullyQualifiedNamespace.

Az Azure Functions szolgáltatásban üzemeltetett identitásalapú kapcsolatok felügyelt identitást használnak. A rendszer alapértelmezés szerint a rendszer által hozzárendelt identitást használja, bár a felhasználó által hozzárendelt identitás megadható a credential tulajdonságokkal együtt clientID . Vegye figyelembe, hogy a felhasználó által hozzárendelt identitás erőforrás-azonosítóval való konfigurálása nem támogatott. Ha más környezetekben, például helyi fejlesztésben fut, a rendszer ehelyett a fejlesztői identitást használja, bár ez testre szabható. Lásd: Helyi fejlesztés identitásalapú kapcsolatokkal.

Engedély megadása az identitáshoz

Bármilyen identitást is használ, rendelkeznie kell a kívánt műveletek végrehajtásához szükséges engedélyekkel. A legtöbb Azure-szolgáltatás esetében ez azt jelenti, hogy egy szerepkört kell hozzárendelnie az Azure RBAC-ben beépített vagy egyéni szerepkörökkel, amelyek biztosítják ezeket az engedélyeket.

Fontos

A célszolgáltatás bizonyos engedélyeket közzétehet, amelyek nem minden környezethez szükségesek. Ahol lehetséges, tartsa be a minimális jogosultság elvét, és csak az identitáshoz szükséges jogosultságokat adja meg. Ha például az alkalmazásnak csak adatforrásból kell olvasnia, használjon olyan szerepkört, amely csak olvasási engedéllyel rendelkezik. Nem lenne helyénvaló olyan szerepkört hozzárendelni, amely lehetővé teszi az írást is a szolgáltatáshoz, mivel ez túlzott engedély lenne egy olvasási művelethez. Hasonlóképpen meg szeretné győződni arról, hogy a szerepkör-hozzárendelés csak az elolvasandó erőforrásokra terjed ki.

Létre kell hoznia egy szerepkör-hozzárendelést, amely futásidőben hozzáférést biztosít a témakörökhöz és az üzenetsorokhoz. A tulajdonoshoz hasonló felügyeleti szerepkörök nem elegendőek. Az alábbi táblázat olyan beépített szerepköröket mutat be, amelyek a Service Bus-bővítmény normál működésben való használatakor ajánlottak. Előfordulhat, hogy az alkalmazás további engedélyeket igényel az Ön által írt kód alapján.

Kötés típusa Példa beépített szerepkörökre
Trigger1 Azure Service Bus-adatátvevő, Azure Service Bus-adattulajdonos
Kimeneti kötés Azure Service Bus-adatküldő

1 A Service Bus-témakörökből való aktiváláshoz a szerepkör-hozzárendelésnek hatékony hatókörrel kell rendelkeznie a Service Bus-előfizetés erőforrásán. Ha csak a témakört foglalja bele, hibába fog ütközni. Egyes ügyfelek, például az Azure Portal nem teszik közzé a Service Bus-előfizetési erőforrást a szerepkör-hozzárendelés hatóköreként. Ilyen esetekben az Azure CLI használható. További információ: Azure Beépített Azure-szerepkörök az Azure Service Bushoz.

Méregüzenetek

A mérgező üzenetek kezelése nem vezérelhető vagy konfigurálható az Azure Functionsben. A Service Bus maga kezeli a méregüzeneteket.

A PeekLock viselkedése

A Functions-futtatókörnyezet üzenetet kap PeekLock módban.

Alapértelmezés szerint a futtatókörnyezet meghívja Complete az üzenetet, ha a függvény sikeresen befejeződik, vagy ha Abandon a függvény sikertelen. Az automatikus befejezést letilthatja a következő tulajdonsággal: .<host.json/a0autoCompleteMessages>

Alapértelmezés szerint a futtatókörnyezet meghívja Complete az üzenetet, ha a függvény sikeresen befejeződik, vagy ha Abandon a függvény sikertelen. Az automatikus befejezést letilthatja az autoCompleteMessages eseményindító attribútum egyik tulajdonságában vagy host.json tulajdonságán keresztül. Ha a függvénykód kezeli az üzenetegyenlítést, tiltsa le az automatikus kiegészítést.

Ha a függvény hosszabb ideig fut, mint az PeekLock időtúllépés, a zárolás automatikusan megújul, amíg a függvény fut. Az maxAutoRenewDuration host.json konfigurálható, amely a ServiceBusProcessor.MaxAutoLockRenewalDuration értékre van leképezve. Ennek a beállításnak az alapértelmezett értéke 5 perc.

Üzenet metaadatai

Az üzenetkezelésre jellemző típusok lehetővé teszik a metaadatok egyszerű lekérését az objektum tulajdonságaiként. Ezek a tulajdonságok a Functions futtatókörnyezet verziójától, a bővítménycsomag verziójától és a használt C# módtól függnek.

Ezek a tulajdonságok a ServiceBusReceivedMessage osztály tagjai.

Tulajdonság Típus Leírás
ApplicationProperties ApplicationProperties A feladó által beállított tulajdonságok.
ContentType string A feladó és a fogadó által az alkalmazásspecifikus logikához használt tartalomtípus-azonosító.
CorrelationId string A korrelációs azonosító.
DeliveryCount Int32 A szállítások száma.
EnqueuedTime DateTime Az enqueued time in UTC.
ScheduledEnqueueTimeUtc DateTime Az ütemezett lekérdezett idő UTC-ben.
ExpiresAt DateTime A lejárati idő UTC-ben.
MessageId string Felhasználó által definiált érték, amellyel a Service Bus azonosíthatja az ismétlődő üzeneteket, ha engedélyezve van.
ReplyTo string Az üzenetsor címére adott válasz.
Subject string A metaadat-tulajdonság helyett Label használható alkalmazásspecifikus címke.
To string A küldési cím.

Következő lépések