Partager via


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 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[]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[]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.

Étapes suivantes