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.
Belangrijk
De ondersteuning wordt beëindigd voor het in-process model op 10 november 2026. We raden u ten zeerste aan uw apps te migreren naar het geïsoleerde werkrolmodel voor volledige ondersteuning.
Met deze code wordt het ILogger
volgende 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_trigger
volgende:
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.
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 hebt ServiceBusReceivedMessage , 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 hebt ServiceBusReceivedMessage[] , 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.
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:
- De naam van een toepassingsinstelling met een verbindingsreeks
- De naam van een gedeeld voorvoegsel voor meerdere toepassingsinstellingen, samen het definiëren van een op identiteit gebaseerde verbinding.
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.json
of 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. |