Liaisons Azure Service Bus pour Azure Functions
Azure Functions s’intègre avec Azure Service Bus via des déclencheurs et des liaisons. L’intégration avec Service Bus vous permet de créer des fonctions qui réagissent et envoient des messages de file d’attente ou de rubrique.
Action | Type |
---|---|
Exécuter une fonction durant la création d’un message de file d’attente ou de rubrique Service Bus | Déclencheur |
Envoyer des messages Azure Service Bus | Liaison de sortie |
Installer l’extension
Le package NuGet de l’extension que vous installez dépend du mode C# que vous utilisez dans votre application de fonction :
Les fonctions s’exécutent dans un processus de travail C# isolé. Pour en savoir plus, consultez Guide pour l’exécution d’Azure Functions C# dans un processus Worker isolé.
Ajoutez l’extension à votre projet en installant ce package NuGet.
La fonctionnalité de l’extension varie en fonction de la version de l’extension :
Cette version introduit la possibilité de se connecter à l’aide d’une identité au lieu d’un secret. Pour obtenir un tutoriel sur la configuration de vos applications de fonction avec des identités managées, consultez le tutoriel Création d’une application de fonction avec des connexions basées sur l’identité.
Cette version vous permet de lier des types à partir de Azure.Messaging.ServiceBus.
Cette version prend en charge la configuration des déclencheurs et des liaisons via l’intégration de .NET Aspire.
Ajoutez l’extension à votre projet en installant le package NuGet, version 5.x.
Installer le bundle
La liaison Service Bus fait partie d’un bundle d’extension, qui est spécifié dans votre Fichier projet host.json. Vous devrez peut-être modifier cette offre groupée pour modifier la version de la liaison ou si les offres groupées ne sont pas encore installées. Pour plus d’informations, consultez le bundle d’extensions.
Cette version introduit la possibilité de se connecter à l’aide d’une identité au lieu d’un secret. Pour obtenir un tutoriel sur la configuration de vos applications de fonction avec des identités managées, consultez le tutoriel sur la création d’une application de fonction avec des connexions basées sur l’identité.
Vous pouvez ajouter cette version de l’extension à partir de l’offre groupée d’extension v3 en ajoutant ou en remplaçant le code suivant dans votre fichier host.json
:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.3.0, 4.0.0)"
}
}
Pour en savoir plus, consultez Mettre à jour vos extensions.
Types de liaisons
Les types de liaisons pris en charge pour .NET dépendent à la fois de la version de l’extension et du mode d’exécution C#, qui peut être l’un des suivants :
Une bibliothèque de classes de processus Worker isolé est une fonction C# compilée exécutée dans un processus Worker isolé du runtime.
Choisissez une version pour afficher les détails des types de liaison du mode et de la version.
Le processus Worker isolé prend en charge les types de paramètres en fonction des tableaux ci-dessous.
Déclencheur Service Bus
Lorsque vous souhaitez que la fonction traite un seul message, le déclencheur Service Bus peut se lier aux types suivants :
Type | Description |
---|---|
string |
Message en tant que chaîne. À utiliser lorsque le message est du texte simple. |
byte[] |
Les octets du message. |
Types sérialisables JSON | Quand un événement contient des données JSON, Functions tente de désérialiser les données JSON dans un type d’Objet CLR traditionnel (OCT). |
ServiceBusReceivedMessage1 | L’objet message. Lors de la liaison à ServiceBusReceivedMessage , vous pouvez également inclure un paramètre de type ServiceBusMessageActions1,2 pour effectuer des actions de règlement des messages. |
Lorsque vous souhaitez que la fonction traite un lot de messages, le déclencheur Service Bus peut se lier aux types suivants :
Type | Description |
---|---|
T[] où T est l’un des types de messages uniques |
Tableau d’événements du lot. Chaque entrée représente un événement. Lors de la liaison à ServiceBusReceivedMessage[] , vous pouvez également inclure un paramètre de type ServiceBusMessageActions1,2 pour effectuer des actions de règlement des messages. |
1 Pour utiliser ces types, vous devez référencer Microsoft.Azure.Functions.Worker.Extensions.ServiceBus 5.14.1 ou version ultérieure et les dépendances courantes des liaisons de type kit de développement logiciel (SDK).
2 Lors de l’utilisation ServiceBusMessageActions
, définissez la AutoCompleteMessages
propriété de l’attribut de déclencheur sur false
. Cela empêche le runtime de tenter de terminer les messages après un appel de fonction réussi.
Liaison de sortie Service Bus
Lorsque vous souhaitez que la fonction écrive un seul message, la liaison de sortie Service Bus peut se lier aux types suivants :
Type | Description |
---|---|
string |
Message en tant que chaîne. À utiliser lorsque le message est du texte simple. |
byte[] |
Les octets du message. |
Types sérialisables JSON | Objet représentant le message. Les fonctions tentent de sérialiser un ancien type d'objet CLR (POCO) en données JSON. |
Lorsque vous souhaitez que la fonction écrive plusieurs messages, la liaison de sortie de file d’attente peut se lier aux types suivants :
Type | Description |
---|---|
T[] où T est l’un des types de messages uniques |
Un tableau contenant plusieurs messages. Chaque entrée représente un message. |
Pour d’autres scénarios de sortie, créez et utilisez un ServiceBusClient avec d’autres types d’Azure.Messaging.ServiceBus directement. Consultez Inscrire des clients Azure pour obtenir un exemple d’utilisation de l’injection de dépendances pour créer un type de client à partir du Kit de développement logiciel (SDK) Azure.
Paramètres host.json
Cette section décrit les paramètres de configuration disponibles pour cette liaison, qui dépendent de la version du runtime et de l’extension.
{
"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
}
}
}
Les paramètres clientRetryOptions
s’appliquent uniquement aux interactions avec le service Service Bus. Ils n’affectent pas les nouvelles tentatives d’exécutions de fonction. Pour plus d’informations, consultez Nouvelles tentatives.
Propriété | Default | Description |
---|---|---|
mode | Exponential |
Approche à utiliser pour calculer les délais de nouvelle tentative. Le mode exponentiel par défaut effectue de nouvelles tentatives avec un délai basé sur une stratégie de backoff, où chaque tentative augmente la durée d’attente avant la nouvelle tentative. Le mode Fixed effectue de nouvelles tentatives à intervalles fixes, chaque délai ayant la même durée. |
tryTimeout | 00:01:00 |
Durée maximale d’attente d’une opération par tentative. |
delay | 00:00:00.80 |
Délai ou facteur de backoff à appliquer entre les nouvelles tentatives. |
maxDelay | 00:01:00 |
Délai maximal à accorder entre les nouvelles tentatives. |
maxRetries | 3 |
Nombre maximal de nouvelles tentatives avant de considérer que l’opération associée a échoué. |
prefetchCount | 0 |
Obtient ou définit le nombre de messages que le destinataire des messages peut demander simultanément. |
transportType | amqpTcp | Protocole et transport utilisés pour communiquer avec Service Bus. Options disponibles : amqpTcp , amqpWebSockets |
webProxy | n/a | Proxy à utiliser pour communiquer avec Service Bus sur des sockets web. Un proxy ne peut pas être utilisé avec le transport amqpTcp . |
autoCompleteMessages | true |
Détermine s’il faut ou non terminer automatiquement les messages après l’exécution réussie de la fonction. |
maxAutoLockRenewalDuration | 00:05:00 |
Durée maximale pendant laquelle le verrouillage de message doit être renouvelé automatiquement. Ce paramètre s’applique uniquement aux fonctions qui reçoivent un seul message à la fois. |
maxConcurrentCalls | 16 |
Nombre maximal d’appels simultanés pour le rappel que l’on peut lancer par instance mise à l’échelle. Par défaut, le runtime Functions traite plusieurs messages simultanément. Ce paramètre est utilisé uniquement lorsque la propriété ou l’attribut isSessionsEnabled sur le déclencheur a la valeur false . Ce paramètre s’applique uniquement aux fonctions qui reçoivent un seul message à la fois. |
maxConcurrentSessions | 8 |
Nombre maximal de sessions qui peuvent être traitées simultanément par instance mise à l’échelle. Ce paramètre est utilisé uniquement lorsque la propriété ou l’attribut isSessionsEnabled sur le déclencheur a la valeur true . Ce paramètre s’applique uniquement aux fonctions qui reçoivent un seul message à la fois. |
maxMessageBatchSize | 1000 |
Nombre maximal de messages qui seront transmis à chaque appel de fonction. Ce paramètre s’applique uniquement aux fonctions qui reçoivent un lot de messages. |
minMessageBatchSize1 | 1 |
Nombre minimal de messages souhaités dans un lot. La valeur minimale s’applique uniquement lorsque la fonction reçoit plusieurs messages et doit être inférieure à maxMessageBatchSize . La taille minimale n’est pas strictement garantie. Un lot partiel est distribué quand un lot complet ne peut pas être préparé avant l’expiration du maxBatchWaitTime . |
maxBatchWaitTime1 | 00:00:30 |
Intervalle maximal devant être observé par le déclencheur pour remplir un lot avant d’appeler la fonction. Le temps d’attente est uniquement pris en compte lorsque minMessageBatchSize est supérieur à 1 et est ignoré dans d’autres cas. Si moins de minMessageBatchSize messages étaient disponibles avant l’expiration du temps d’attente, la fonction est appelée à l’aide d’un lot partiel. Le temps d’attente autorisé le plus long est de 50 % de la durée de verrouillage des messages d’entité, ce qui signifie que le maximum autorisé est de 2 minutes et 30 secondes. Sinon, vous pouvez obtenir des exceptions de verrou. REMARQUE : cet intervalle n’est pas une stricte garantie du minutage exact sur lequel la fonction est appelée. Il existe une petite marge d’erreur en raison de la précision du retardateur. |
sessionIdleTimeout | n/a | Délai d’attente maximal pour la réception d’un message pour la session active. Une fois ce délai écoulé, la session est fermée et la fonction tente de traiter une autre session. |
enableCrossEntityTransactions | false |
Indique s’il faut ou non activer les transactions qui s’étendent sur plusieurs entités dans un espace de noms Service Bus. |
1 L’utilisation de minMessageBatchSize
et de maxBatchWaitTime
requiert la version v5.10.0 ou ultérieure du package Microsoft.Azure.WebJobs.Extensions.ServiceBus
.