Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
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 | Catégorie |
|---|---|
| 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
Pour pouvoir utiliser cette extension de liaison dans votre application, assurez-vous que le fichier host.json à la racine de votre projet contient cette extensionBundle référence :
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
Dans cet exemple, la version valeur de [4.0.0, 5.0.0) l’hôte Functions indique à l’hôte Functions d’utiliser une version groupée qui est au moins 4.0.0 mais inférieure à , qui inclut toutes les versions potentielles 5.0.0de 4.x. Cette notation gère efficacement votre application sur la dernière version mineure disponible de l’offre groupée d’extensions v4.x.
Si possible, vous devez utiliser la dernière version principale de l’offre groupée d’extensions et autoriser le runtime à gérer automatiquement la dernière version mineure. Vous pouvez afficher le contenu de la dernière offre groupée sur la page de publication des offres groupées d’extensions. Pour plus d’informations, consultez les bundles d’extensions Azure Functions.
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 :
| Catégorie | Descriptif |
|---|---|
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 :
| Catégorie | Descriptif |
|---|---|
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 :
| Catégorie | Descriptif |
|---|---|
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 :
| Catégorie | Descriptif |
|---|---|
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.
Types de liaisons sdk
Les types de SDK pour Azure Service Bus sont en préversion. Suivez les liaisons du Kit de développement logiciel (SDK) Python pour l’exemple Service Bus pour bien démarrer avec les types de SDK pour Service Bus dans Python.
Important
L’utilisation de liaisons de type SDK nécessite le modèle de programmation Python v2.
| Reliure | Types de paramètres | Échantillons |
|---|---|---|
| Déclencheur ServiceBus | ServiceBusReceivedMessage | ServiceBusReceivedMessage |
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é | Par défaut | Descriptif |
|---|---|---|
| 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. |
| retarder | 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 et qui ne s’appliquent pas aux fonctions recevant un lot de messages. Pour les lots, la durée maximale est définie dans Service Bus au niveau de la file d’attente ou de l’abonnement. |
| maxConcurrentCalls | 16 |
Par défaut, le runtime Functions traite plusieurs messages simultanément. Ce paramètre limite le nombre maximal d’appels simultanés au rappel qui peut être lancé par instance mise à l’échelle. Lorsque votre plan d’hébergement comporte plusieurs cœurs par instance, le nombre maximal d’appels est multiplié par le nombre de cœurs. Par exemple, dans un plan qui s’exécute sur du matériel avec deux cœurs, le paramètre 16 par défaut signifie que le nombre maximal d’appels simultanés par instance est vraiment 32 (ou 2 * 16). 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 par opposition à un lot. |
| 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.