Déclencheur Azure Event Hubs et liaisons pour Azure Functions

Cet article explique comment utiliser des liaisons Azure Event Hubs pour Azure Functions. Azure Functions prend en charge des liaisons de déclencheur et de sortie pour des Event Hubs.

Action Type
Répondez aux événements envoyés à un flux d’événements Event Hub. Déclencheur
Écrire des événements dans un flux d’événements 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 le même processus que l’hôte Functions. Pour en découvrir plus, consultez Développer des fonctions de bibliothèque de classes C# à l’aide d’Azure Functions.

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 utilise le type de liaison Event Hubs Azure.Messaging.EventHubs.EventData.

Cette version de l’extension est disponible en installant le package NuGet, version 5.x.

Installer le bundle

L’extension Event Hubs fait partie d’une offre groupée d’extension, qui est spécifiée dans votre fichier projet host.json. Vous devrez peut-être modifier cette offre groupée pour modifier la version de la liaison Event Grid, 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.

Paramètres host.json

Le fichier host.json contient les paramètres qui contrôlent le comportement du déclencheur Event Hubs. La configuration diffère selon la version de l’extension.

{
    "version": "2.0",
    "extensions": {
        "eventHubs": {
            "maxEventBatchSize" : 10,
            "batchCheckpointFrequency" : 1,
            "prefetchCount" : 300,
            "transportType" : "amqpWebSockets",
            "webProxy" : "https://proxyserver:8080",
            "customEndpointAddress" : "amqps://company.gateway.local",
            "initialOffsetOptions" : {
                "type" : "fromStart",
                "enqueuedTimeUtc" : ""
            },
            "clientRetryOptions":{
                "mode" : "exponential",
                "tryTimeout" : "00:01:00",
                "delay" : "00:00:00.80",
                "maximumDelay" : "00:01:00",
                "maximumRetries" : 3
            }
        }
    }
}  
Propriété Default Description
maxEventBatchSize 10 Nombre maximal d’événements qui seront inclus dans un lot pour un seul appel. Doit être au moins égal à 1.
batchCheckpointFrequency 1 Nombre de lots à traiter avant de créer un point de contrôle pour Event Hub.
prefetchCount 300 Nombre d’événements qui seront demandés de façon dynamique à partir d’Event Hubs et maintenus dans un cache local pour permettre aux lectures d’éviter d’attendre une opération réseau
transportType amqpTcp Protocole et transport utilisés pour communiquer avec Event Hubs. Options disponibles : amqpTcp, amqpWebSockets
webProxy Proxy à utiliser pour communiquer avec Event Hubs sur des sockets Web. Un proxy ne peut pas être utilisé avec le transport amqpTcp.
customEndpointAddress Adresse à utiliser lors de l’établissement d’une connexion à Event Hubs, ce qui permet de router les demandes réseau via une passerelle d’application ou un autre chemin d’accès nécessaire pour l’environnement hôte. L’espace de noms complet d’Event Hub est toujours nécessaire lorsqu’une adresse de point de terminaison personnalisée est utilisée et doit être spécifiée explicitement ou via la chaîne de connexion.
initialOffsetOptions/type fromStart Emplacement dans le flux d’événements pour démarrer le traitement lorsqu’il n’existe pas de point de contrôle dans le stockage. S’applique à toutes les partitions. Pour plus d’informations, consultez la documentation d’OffsetType. Options disponibles : fromStart, fromEnd, fromEnqueuedTime
initialOffsetOptions/enqueuedTimeUtc Spécifie la durée de mise en file d’attente de l’événement dans le flux à partir duquel commencer le traitement. Lorsque initialOffsetOptions/type est configuré sur fromEnqueuedTime, ce paramètre est obligatoire. Prend en charge une valeur temporelle dans n’importe quel format pris en charge par DateTime.Parse(), par exemple . Par souci de clarté, vous devez également spécifier un fuseau horaire. Lorsque aucun fuseau horaire n’est spécifié, Functions adopte le fuseau horaire local de l’ordinateur exécutant l’application de fonction, qui est l’heure UTC en cas d’exécution sur Azure.
clientRetryOptions/mode exponential Approche à utiliser pour calculer les délais de nouvelle tentative. Le mode exponentiel 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 fixe effectue de nouvelles tentatives à intervalles fixes, chaque délai ayant la même durée. Options disponibles : exponential, fixed
clientRetryOptions/tryTimeout 00:01:00 Durée maximale à attendre pour qu’une opération Event Hubs soit terminée, par tentative.
clientRetryOptions/delay 00:00:00.80 Délai ou facteur de backoff à appliquer entre les nouvelles tentatives.
clientRetryOptions/maximumDelay 00:00:01 Délai maximal à accorder entre les nouvelles tentatives.
clientRetryOptions/maximumRetries 3 Nombre maximal de nouvelles tentatives avant de considérer que l’opération associée a échoué.

Les clientRetryOptions sont utilisés pour effectuer de nouvelles tentatives entre l’hôte Functions et Event Hubs (telles que la récupération (fetch) d’événements et l’envoi d’événements). Pour plus d’informations sur l’application de stratégies de nouvelle tentative à des fonctions individuelles, reportez-vous aux conseils sur la Gestion des erreurs et nouvelles tentatives dans Azure Functions.

Pour obtenir des informations de référence sur le fichier host.json dans Azure Functions 2.x et ultérieur, consultez Informations de référence sur le fichier host.json pour Azure Functions.

Étapes suivantes