Share via


Azure Service Bus-trigger voor Azure Functions

Gebruik de Service Bus-trigger om te reageren op berichten uit een Service Bus-wachtrij of -onderwerp. Vanaf extensieversie 3.1.0 kunt u activeren in een wachtrij of onderwerp met sessiefunctionaliteit.

Zie het overzicht voor informatie over het instellen en configureren van details.

Beslissingen voor Het schalen van Service Bus voor de abonnementen Verbruik en Premium worden gemaakt op basis van schaalaanpassing op basis van doel. Zie Schalen op basis van doel voor meer informatie.

Belangrijk

In dit artikel worden tabbladen gebruikt ter ondersteuning van meerdere versies van het Node.js programmeermodel. Het v4-model is algemeen beschikbaar en is ontworpen voor een flexibelere en intuïtievere ervaring voor JavaScript- en TypeScript-ontwikkelaars. Raadpleeg de ontwikkelaarshandleiding voor Azure Functions Node.js voor meer informatie over hoe het v4-model werkt. Raadpleeg de migratiehandleiding voor meer informatie over de verschillen tussen v3 en v4.

Azure Functions ondersteunt twee programmeermodellen voor Python. De manier waarop u uw bindingen definieert, is afhankelijk van het gekozen programmeermodel.

Met het Python v2-programmeermodel kunt u bindingen definiëren met behulp van decorators rechtstreeks in uw Python-functiecode. Zie de Ontwikkelaarshandleiding voor Python voor meer informatie.

Dit artikel ondersteunt beide programmeermodellen.

Opmerking

U kunt een C#-functie maken met behulp van een van de volgende C#-modi:

  • Geïsoleerd werkrolmodel: gecompileerde C#-functie die wordt uitgevoerd in een werkproces dat is geïsoleerd van de runtime. Geïsoleerd werkproces is vereist voor de ondersteuning van C#-functies die worden uitgevoerd op LTS- en niet-LTS-versies .NET en .NET Framework. Extensies voor geïsoleerde werkprocesfuncties maken gebruik van Microsoft.Azure.Functions.Worker.Extensions.* naamruimten.
  • In-process model: gecompileerde C#-functie die wordt uitgevoerd in hetzelfde proces als de Functions-runtime. In een variatie van dit model kunnen functies worden uitgevoerd met behulp van C#-scripting. Dit wordt voornamelijk ondersteund voor het bewerken van de C#-portal. Extensies voor in-process-functies maken gebruik van Microsoft.Azure.WebJobs.Extensions.* naamruimten.

Met deze code wordt het ILoggervolgende gedefinieerd en geïnitialiseerd:

private readonly ILogger<ServiceBusReceivedMessageFunctions> _logger;

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

In dit voorbeeld ziet u een C#-functie die één Service Bus-wachtrijbericht ontvangt en naar de logboeken schrijft:

[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;
}

In dit voorbeeld ziet u een C#-functie die meerdere Service Bus-wachtrijberichten in één batch ontvangt en elke functie naar de logboeken schrijft:

[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);
    }
}

In dit voorbeeld ziet u een C#-functie die meerdere Service Bus-wachtrijberichten ontvangt, deze naar de logboeken schrijft en vervolgens het bericht vereffent als voltooid:

[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);
}

De volgende Java-functie maakt gebruik van de @ServiceBusQueueTrigger aantekening uit de Runtime-bibliotheek van Java Functions om de configuratie voor een Service Bus-wachtrijtrigger te beschrijven. De functie pakt het bericht in de wachtrij en voegt het toe aan de logboeken.

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

Java-functies kunnen ook worden geactiveerd wanneer een bericht wordt toegevoegd aan een Service Bus-onderwerp. In het volgende voorbeeld wordt de @ServiceBusTopicTrigger aantekening gebruikt om de triggerconfiguratie te beschrijven.

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

In het volgende voorbeeld ziet u een TypeScript-functie van de Service Bus-trigger. De functie leest metagegevens van berichten en registreert een Service Bus-wachtrijbericht.

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,
});

In het volgende voorbeeld ziet u een JavaScript-functie voor de Service Bus-trigger. De functie leest metagegevens van berichten en registreert een Service Bus-wachtrijbericht.

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);
    },
});

In het volgende voorbeeld ziet u een Service Bus-triggerbinding in een function.json-bestand en een PowerShell-functie die gebruikmaakt van de binding.

Dit zijn de bindingsgegevens in het bestand function.json :

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

Dit is de functie die wordt uitgevoerd wanneer een Service Bus-bericht wordt verzonden.

param([string] $mySbMsg, $TriggerMetadata)

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

In het volgende voorbeeld ziet u hoe u een Service Bus-wachtrijbericht leest via een trigger. Het voorbeeld is afhankelijk van of u het python-programmeermodel v1 of v2 gebruikt.

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'))

In het volgende voorbeeld ziet u hoe u een Service Bus-wachtrijonderwerp leest via een trigger.

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)

Kenmerken

C #-bibliotheken voor zowel in-process - als geïsoleerde werkprocessen maken gebruik van het kenmerk ServiceBusTriggerAttribute om de functietrigger te definiëren. C#-script maakt in plaats daarvan gebruik van een function.json configuratiebestand, zoals beschreven in de handleiding voor C#-scripts.

In de volgende tabel worden de eigenschappen uitgelegd die u kunt instellen met behulp van dit triggerkenmerk:

Eigenschappen Beschrijving
QueueName Naam van de wachtrij die moet worden bewaakt. Alleen instellen als u een wachtrij bewaakt, niet voor een onderwerp.
TopicName De naam van het onderwerp dat moet worden bewaakt. Alleen instellen als u een onderwerp bewaakt, niet voor een wachtrij.
SubscriptionName Naam van het abonnement dat moet worden bewaakt. Alleen instellen als u een onderwerp bewaakt, niet voor een wachtrij.
Verbinding De naam van een app-instelling of instellingsverzameling die aangeeft hoe verbinding moet worden gemaakt met Service Bus. Zie verbindingen.
IsBatched Berichten worden in batches bezorgd. Hiervoor is een matrix- of verzamelingstype vereist.
IsSessionsEnabled true als u verbinding maakt met een sessiebewuste wachtrij of een abonnement. false anders is dit de standaardwaarde.
AutoCompleteMessages true als de trigger het bericht automatisch moet voltooien na een geslaagde aanroep. false als dit niet het geval is, bijvoorbeeld wanneer u berichtafhandeling in code verwerkt. Als dit niet expliciet is ingesteld, wordt het gedrag gebaseerd op de autoCompleteMessages configuratie in host.json.

Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values verzameling.

Decorators

Is alleen van toepassing op het Python v2-programmeermodel.

Voor Python v2-functies die zijn gedefinieerd met behulp van een decorator, zijn de volgende eigenschappen op het service_bus_queue_triggervolgende:

Eigenschappen Beschrijving
arg_name De naam van de variabele die de wachtrij of het onderwerpbericht in functiecode vertegenwoordigt.
queue_name Naam van de wachtrij die moet worden bewaakt. Alleen instellen als u een wachtrij bewaakt, niet voor een onderwerp.
connection De naam van een app-instelling of instellingsverzameling die aangeeft hoe verbinding moet worden gemaakt met Service Bus. Zie verbindingen.

Zie de sectie Configuratie voor Python-functies die zijn gedefinieerd met behulp van function.json.

Aantekeningen

Met de ServiceBusQueueTrigger aantekening kunt u een functie maken die wordt uitgevoerd wanneer een Service Bus-wachtrijbericht wordt gemaakt. Configuratieopties die beschikbaar zijn, zijn onder andere de volgende eigenschappen:

Eigenschappen Beschrijving
name De naam van de variabele die de wachtrij of het onderwerpbericht in functiecode vertegenwoordigt.
queueName Naam van de wachtrij die moet worden bewaakt. Alleen instellen als u een wachtrij bewaakt, niet voor een onderwerp.
topicName De naam van het onderwerp dat moet worden bewaakt. Alleen instellen als u een onderwerp bewaakt, niet voor een wachtrij.
subscriptionName Naam van het abonnement dat moet worden bewaakt. Alleen instellen als u een onderwerp bewaakt, niet voor een wachtrij.
verbinding De naam van een app-instelling of instellingsverzameling die aangeeft hoe verbinding moet worden gemaakt met Service Bus. Zie verbindingen.

ServiceBusTopicTrigger Met de aantekening kunt u een onderwerp en abonnement aanwijzen om te bepalen welke gegevens de functie activeren.

Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values verzameling.

Zie het triggervoorbeeld voor meer details.

Configuratie

Is alleen van toepassing op het Python v1-programmeermodel.

In de volgende tabel worden de eigenschappen uitgelegd die u kunt instellen voor het object dat aan de options app.serviceBusQueue() of app.serviceBusTopic() methoden is doorgegeven.

Eigenschappen Beschrijving
queueName Naam van de wachtrij die moet worden bewaakt. Alleen instellen als u een wachtrij bewaakt, niet voor een onderwerp.
topicName De naam van het onderwerp dat moet worden bewaakt. Alleen instellen als u een onderwerp bewaakt, niet voor een wachtrij.
subscriptionName Naam van het abonnement dat moet worden bewaakt. Alleen instellen als u een onderwerp bewaakt, niet voor een wachtrij.
verbinding De naam van een app-instelling of instellingsverzameling die aangeeft hoe verbinding moet worden gemaakt met Service Bus. Zie verbindingen.
accessRights Toegangsrechten voor de verbindingsreeks. Beschikbare waarden zijn manage en listen. De standaardwaarde ismanage, wat aangeeft dat de connection machtiging Beheren is ingesteld. Als u een verbindingsreeks gebruikt waarvoor de machtiging Beheren niet is ingesteld, stelt u 'listen' inaccessRights. Anders kan de Functions-runtime mislukken bij het uitvoeren van bewerkingen waarvoor beheerrechten zijn vereist. In Azure Functions versie 2.x en hoger is deze eigenschap niet beschikbaar omdat de nieuwste versie van de Service Bus SDK geen ondersteuning biedt voor beheerbewerkingen.
isSessionsEnabled true als u verbinding maakt met een sessiebewuste wachtrij of een abonnement. false anders is dit de standaardwaarde.
automatisch aanvullen Moet voor niet-C#-functies zijn true , wat betekent dat de trigger automatisch moet worden aangeroepen nadat de verwerking is voltooid of dat de functiecode handmatig wordt aangeroepen.

Als deze optie is ingesteld true, wordt het bericht automatisch voltooid als de uitvoering van de functie is voltooid en het bericht anders wordt afgelaten.

Uitzonderingen in de functie leiden tot runtime-aanroepen abandonAsync op de achtergrond. Als er geen uitzondering optreedt, wordt deze completeAsync op de achtergrond aangeroepen. Deze eigenschap is alleen beschikbaar in Azure Functions 2.x en hoger.

Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values verzameling.

In de volgende tabel worden de bindingsconfiguratie-eigenschappen uitgelegd die u in het function.json-bestand hebt ingesteld.

function.json-eigenschap Beschrijving
type Moet worden ingesteld op serviceBusTrigger. Deze eigenschap wordt automatisch ingesteld wanneer u de trigger maakt in de Azure-portal.
direction Moet zijn ingesteld op 'in'. Deze eigenschap wordt automatisch ingesteld wanneer u de trigger maakt in de Azure-portal.
name De naam van de variabele die de wachtrij of het onderwerpbericht in functiecode vertegenwoordigt.
queueName Naam van de wachtrij die moet worden bewaakt. Alleen instellen als u een wachtrij bewaakt, niet voor een onderwerp.
topicName De naam van het onderwerp dat moet worden bewaakt. Alleen instellen als u een onderwerp bewaakt, niet voor een wachtrij.
subscriptionName Naam van het abonnement dat moet worden bewaakt. Alleen instellen als u een onderwerp bewaakt, niet voor een wachtrij.
verbinding De naam van een app-instelling of instellingsverzameling die aangeeft hoe verbinding moet worden gemaakt met Service Bus. Zie verbindingen.
accessRights Toegangsrechten voor de verbindingsreeks. Beschikbare waarden zijn manage en listen. De standaardwaarde ismanage, wat aangeeft dat de connection machtiging Beheren is ingesteld. Als u een verbindingsreeks gebruikt waarvoor de machtiging Beheren niet is ingesteld, stelt u 'listen' inaccessRights. Anders kan de Functions-runtime mislukken bij het uitvoeren van bewerkingen waarvoor beheerrechten zijn vereist. In Azure Functions versie 2.x en hoger is deze eigenschap niet beschikbaar omdat de nieuwste versie van de Service Bus SDK geen ondersteuning biedt voor beheerbewerkingen.
isSessionsEnabled true als u verbinding maakt met een sessiebewuste wachtrij of een abonnement. false anders is dit de standaardwaarde.
automatisch aanvullen Moet voor niet-C#-functies zijn true , wat betekent dat de trigger automatisch moet worden aangeroepen nadat de verwerking is voltooid of dat de functiecode handmatig wordt aangeroepen.

Als deze optie is ingesteld true, wordt het bericht automatisch voltooid als de uitvoering van de functie is voltooid en het bericht anders wordt afgelaten.

Uitzonderingen in de functie leiden tot runtime-aanroepen abandonAsync op de achtergrond. Als er geen uitzondering optreedt, wordt deze completeAsync op de achtergrond aangeroepen. Deze eigenschap is alleen beschikbaar in Azure Functions 2.x en hoger.

Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values verzameling.

Zie de sectie Voorbeeld voor volledige voorbeelden.

Gebruik

De volgende parametertypen worden ondersteund door alle C#-modaliteiten en extensieversies:

Type Description
System.String Gebruik dit bericht wanneer het bericht eenvoudige tekst is.
byte[] Gebruiken voor binaire gegevensberichten.
Object Wanneer een bericht JSON bevat, probeert Functions deSerialiseren van de JSON-gegevens in een bekend, oud CLR-objecttype.

Berichtspecifieke parametertypen bevatten aanvullende metagegevens van berichten. De specifieke typen die door de Service Bus-trigger worden ondersteund, zijn afhankelijk van de runtimeversie van Functions, de versie van het extensiepakket en de gebruikte C#-modaliteit.

Wanneer u wilt dat de functie één bericht verwerkt, kan de Service Bus-trigger worden gekoppeld aan de volgende typen:

Type Description
string Het bericht als tekenreeks. Gebruik dit bericht wanneer het bericht eenvoudige tekst is.
byte[] De bytes van het bericht.
JSON serialiseerbare typen Wanneer een gebeurtenis JSON-gegevens bevat, probeert Functions deSerialiseren van de JSON-gegevens in een niet-oud POCO-type (CLR-object).
ServiceBusReceivedMessage1 Het berichtobject.

Wanneer u een binding aan hebtServiceBusReceivedMessage, kunt u eventueel ook een parameter van het type ServiceBusMessageActions 1,2 opnemen om berichtafhandelingsacties uit te voeren.

Wanneer u wilt dat de functie een batch berichten verwerkt, kan de Service Bus-trigger worden gekoppeld aan de volgende typen:

Type Description
T[] waarbij T een van de typen één bericht is Een matrix met gebeurtenissen uit de batch. Elke vermelding vertegenwoordigt één gebeurtenis.

Wanneer u een binding aan hebtServiceBusReceivedMessage[], kunt u eventueel ook een parameter van het type ServiceBusMessageActions 1,2 opnemen om berichtafhandelingsacties uit te voeren.

1 Als u deze typen wilt gebruiken, moet u verwijzen naar Microsoft.Azure.Functions.Worker.Extensions.ServiceBus 5.14.1 of hoger en de algemene afhankelijkheden voor SDK-typebindingen.

2 Wanneer u het gebruiktServiceBusMessageActions, stelt u deAutoCompleteMessages eigenschap van het triggerkenmerk in op false. Hiermee voorkomt u dat de runtime berichten probeert te voltooien na een geslaagde aanroep van een functie.

Wanneer de Connection eigenschap niet is gedefinieerd, zoekt Functions naar een app-instelling met de naam AzureWebJobsServiceBus, de standaardnaam voor de Service Bus-verbindingsreeks. U kunt de Connection eigenschap ook instellen om de naam op te geven van een toepassingsinstelling die de Service Bus-verbindingsreeks bevat die u wilt gebruiken.

Het binnenkomende Service Bus-bericht is beschikbaar via een ServiceBusQueueMessage of ServiceBusTopicMessage parameter.

Open de wachtrij of het onderwerpbericht als het eerste argument voor uw functie. Het Service Bus-bericht wordt doorgegeven aan de functie als een tekenreeks of JSON-object.

Het Service Bus-exemplaar is beschikbaar via de parameter die is geconfigureerd in de naameigenschap van het function.json-bestand .

Het wachtrijbericht is beschikbaar voor de functie via een parameter die is getypt als func.ServiceBusMessage. Het Service Bus-bericht wordt doorgegeven aan de functie als een tekenreeks of JSON-object.

Zie de sectie Voorbeelden voor een volledig voorbeeld.

Connecties

De connection eigenschap is een verwijzing naar de omgevingsconfiguratie die aangeeft hoe de app verbinding moet maken met Service Bus. Het kan het volgende opgeven:

Als de geconfigureerde waarde zowel een exacte overeenkomst is voor één instelling als een voorvoegselovereenkomst voor andere instellingen, wordt de exacte overeenkomst gebruikt.

Connection string

Als u een verbindingsreeks wilt verkrijgen, volgt u de stappen die worden weergegeven in De beheerreferenties ophalen. De verbindingsreeks moet voor een Service Bus-naamruimte zijn, niet beperkt tot een specifieke wachtrij of onderwerp.

Deze verbindingsreeks moet worden opgeslagen in een toepassingsinstelling met een naam die overeenkomt met de waarde die is opgegeven door de connection eigenschap van de bindingsconfiguratie.

Als de naam van de app-instelling begint met 'AzureWebJobs', kunt u alleen de rest van de naam opgeven. Als u bijvoorbeeld instelt op connection 'MyServiceBus', zoekt de Functions-runtime naar een app-instelling met de naam 'AzureWebJobsMyServiceBus'. Als u leeg laatconnection, gebruikt de Functions-runtime de standaardService Bus-verbindingsreeks in de app-instelling met de naam AzureWebJobsServiceBus.

Op identiteit gebaseerde verbindingen

Als u versie 5.x of hoger van de extensie gebruikt, in plaats van een verbindingsreeks met een geheim te gebruiken, kunt u de app een Microsoft Entra-identiteit laten gebruiken. Hiervoor definieert u instellingen onder een gemeenschappelijk voorvoegsel dat wordt toegewezen aan de connection eigenschap in de trigger- en bindingsconfiguratie.

In deze modus vereist de extensie de volgende eigenschappen:

Eigenschappen Sjabloon voor omgevingsvariabele Beschrijving Voorbeeldwaarde
Volledig gekwalificeerde naamruimte <CONNECTION_NAME_PREFIX>__fullyQualifiedNamespace De volledig gekwalificeerde Service Bus-naamruimte. <>service_bus_namespace.servicebus.windows.net

Er kunnen extra eigenschappen worden ingesteld om de verbinding aan te passen. Zie Algemene eigenschappen voor op identiteit gebaseerde verbindingen.

Notitie

Wanneer u Azure-app Configuratie of Key Vault gebruikt om instellingen voor beheerde identiteitverbindingen te bieden, moeten instellingsnamen een geldig sleutelscheidingsteken gebruiken, zoals : of / in plaats van de __ sleutelkluis om ervoor te zorgen dat namen correct worden omgezet.

Bijvoorbeeld: <CONNECTION_NAME_PREFIX>:fullyQualifiedNamespace.

Wanneer deze worden gehost in de Azure Functions-service, maken identiteitsverbindingen gebruik van een beheerde identiteit. De door het systeem toegewezen identiteit wordt standaard gebruikt, hoewel een door de gebruiker toegewezen identiteit kan worden opgegeven met de credential en clientID eigenschappen. Houd er rekening mee dat het configureren van een door de gebruiker toegewezen identiteit met een resource-id niet wordt ondersteund. Wanneer uw ontwikkelaarsidentiteit wordt uitgevoerd in andere contexten, zoals lokale ontwikkeling, wordt in plaats daarvan uw ontwikkelaarsidentiteit gebruikt, hoewel dit kan worden aangepast. Zie Lokale ontwikkeling met op identiteit gebaseerde verbindingen.

Toestemming verlenen aan de identiteit

Elke identiteit die wordt gebruikt, moet machtigingen hebben om de beoogde acties uit te voeren. Voor de meeste Azure-services betekent dit dat u een rol in Azure RBAC moet toewijzen met behulp van ingebouwde of aangepaste rollen die deze machtigingen bieden.

Belangrijk

Sommige machtigingen worden mogelijk weergegeven door de doelservice die niet nodig is voor alle contexten. Waar mogelijk moet u zich houden aan het principe van minimale bevoegdheid, waarbij de identiteit alleen vereiste bevoegdheden verleent. Als de app bijvoorbeeld alleen uit een gegevensbron moet kunnen lezen, gebruikt u een rol die alleen gemachtigd is om te lezen. Het zou ongepast zijn om een rol toe te wijzen die ook schrijfbewerkingen naar die service toestaat, omdat dit overmatige machtigingen zou zijn voor een leesbewerking. Op dezelfde manier wilt u ervoor zorgen dat de roltoewijzing alleen is afgestemd op de resources die moeten worden gelezen.

U moet een roltoewijzing maken die tijdens runtime toegang biedt tot uw onderwerpen en wachtrijen. Beheerrollen zoals Eigenaar zijn niet voldoende. In de volgende tabel ziet u ingebouwde rollen die worden aanbevolen bij het gebruik van de Service Bus-extensie in normale werking. Uw toepassing vereist mogelijk extra machtigingen op basis van de code die u schrijft.

Bindingstype Voorbeeld van ingebouwde rollen
Trigger1 Azure Service Bus-gegevensontvanger, Azure Service Bus-gegevenseigenaar
Uitvoerbinding Azure Service Bus-gegevenszender

1 Voor triggering vanuit Service Bus-onderwerpen moet de roltoewijzing een effectief bereik hebben voor de Service Bus-abonnementsresource. Als alleen het onderwerp is opgenomen, treedt er een fout op. Sommige clients, zoals de Azure Portal, maken de Service Bus-abonnementsresource niet beschikbaar als een bereik voor roltoewijzing. In dergelijke gevallen kan de Azure CLI worden gebruikt. Zie ingebouwde Azure-rollen voor Azure Service Bus voor meer informatie.

Gifberichten

De verwerking van gifberichten kan niet worden beheerd of geconfigureerd in Azure Functions. Service Bus verwerkt gifberichten zelf.

PeekLock-gedrag

De Functions-runtime ontvangt een bericht in de PeekLock-modus.

Standaard wordt het bericht door de runtime aangeroepen Complete als de functie is voltooid of wordt aangeroepen Abandon als de functie mislukt. U kunt automatische voltooiing uitschakelen met de eigenschap in host.json.autoCompleteMessages

Standaard wordt het bericht door de runtime aangeroepen Complete als de functie is voltooid of wordt aangeroepen Abandon als de functie mislukt. U kunt automatische voltooiing uitschakelen met de eigenschap in host.jsonof via een eigenschap op het triggerkenmerk.autoCompleteMessages Schakel automatische voltooiing uit als uw functiecode de afwikkeling van berichten afhandelt.

Als de functie langer wordt uitgevoerd dan de PeekLock time-out, wordt de vergrendeling automatisch vernieuwd zolang de functie wordt uitgevoerd. Het maxAutoRenewDuration is configureerbaar in host.json, die wordt toegewezen aan ServiceBusProcessor.MaxAutoLockRenewalDuration. De standaardwaarde van deze instelling is vijf minuten.

Berichtmetagegevens

Met berichtspecifieke typen kunt u eenvoudig metagegevens ophalen als eigenschappen van het object. Deze eigenschappen zijn afhankelijk van de runtimeversie van Functions, de versie van het extensiepakket en de gebruikte C#-modaliteit.

Deze eigenschappen zijn leden van de klasse ServiceBusReceivedMessage .

Eigenschap Type Description
ApplicationProperties ApplicationProperties Eigenschappen die zijn ingesteld door de afzender.
ContentType string Een inhoudstype-id die wordt gebruikt door de afzender en ontvanger voor toepassingsspecifieke logica.
CorrelationId string De correlatie-id.
DeliveryCount Int32 Het aantal leveringen.
EnqueuedTime DateTime De wachtrijtijd in UTC.
ScheduledEnqueueTimeUtc DateTime De geplande enqueuedtijd in UTC.
ExpiresAt DateTime De verlooptijd in UTC.
MessageId string Een door de gebruiker gedefinieerde waarde die Service Bus kan gebruiken om dubbele berichten te identificeren, indien ingeschakeld.
ReplyTo string Het antwoord op het wachtrijadres.
Subject string Het toepassingsspecifieke label dat kan worden gebruikt in plaats van de Label metagegevenseigenschap.
To string Het verzenden naar adres.

Volgende stappen