Liaisons Azure Event Hubs pour Azure FunctionsAzure Event Hubs bindings for Azure Functions

Cet article explique comment utiliser des liaisons Azure Event Hubs pour Azure Functions.This article explains how to work with Azure Event Hubs bindings for Azure Functions. Azure Functions prend en charge des liaisons de déclencheur et de sortie pour des Event Hubs.Azure Functions supports trigger and output bindings for Event Hubs.

Il s’agit des informations de référence pour les développeurs Azure Functions.This is reference information for Azure Functions developers. Si vous ne connaissez pas bien Azure Functions, commencez par consulter les ressources suivantes :If you're new to Azure Functions, start with the following resources:

Packages - Functions 1.xPackages - Functions 1.x

Pour la version Azure Functions 1.x, les liaisons Event Hubs sont fournies dans le package NuGet Microsoft.Azure.WebJobs.ServiceBus, version 2.x.For Azure Functions version 1.x, the Event Hubs bindings are provided in the Microsoft.Azure.WebJobs.ServiceBus NuGet package, version 2.x. Le code source du package se trouve dans le référentiel GitHub azure-webjobs-sdk.Source code for the package is in the azure-webjobs-sdk GitHub repository.

Le tableau suivant indique comment ajouter la prise en charge de cette liaison dans chaque environnement de développement.The following table tells how to add support for this binding in each development environment.

Environnement de développementDevelopment environment Pour ajouter la prise en charge dansTo add support in
Functions 1.xFunctions 1.x
Développement local - Bibliothèque de classes C#Local development - C# class library Installer le package.Install the package
Développement local - Script C#, JavaScript, F#Local development - C# script, JavaScript, F# AutomatiqueAutomatic
Développement sur le portailPortal development AutomatiqueAutomatic

Packages - Functions 2.x et ultérieurPackages - Functions 2.x and higher

Pour Functions 2.x et ultérieur, utilisez le package Microsoft.Azure.WebJobs.Extensions.EventHubs, version 3.x.For Functions 2.x and higher, use the Microsoft.Azure.WebJobs.Extensions.EventHubs package, version 3.x. Le code source du package se trouve dans le référentiel GitHub azure-webjobs-sdk.Source code for the package is in the azure-webjobs-sdk GitHub repository.

Le tableau suivant indique comment ajouter la prise en charge de cette liaison dans chaque environnement de développement.The following table tells how to add support for this binding in each development environment.

Environnement de développementDevelopment environment Pour ajouter la prise en chargeTo add support
Développement local - Bibliothèque de classes C#Local development - C# class library Installer le package.Install the package
Développement local - Script C#, JavaScript, F#, Java et PythonLocal development - C# script, JavaScript, F#, Java and Python Enregistrer l’extensionRegister the extension
Développement sur le portailPortal development Installer lors de l’ajout d’une liaison de sortieInstall when adding output binding

Pour apprendre comment mettre à jour les extensions de liaison existantes dans le portail sans avoir à republier votre projet d'application de fonction, voir Mettre à jour vos extensions.To learn how to update existing binding extensions in the portal without having to republish your function app project, see Update your extensions.

DéclencheurTrigger

Utilisez le déclencheur de fonction pour répondre à un événement envoyé à un flux d’événements d’un hub d’événements.Use the function trigger to respond to an event sent to an event hub event stream. Vous devez disposer de l’accès en lecture au hub d’événements sous-jacent pour configurer le déclencheur.You must have read access to the underlying event hub to set up the trigger. Une fois la fonction déclenchée, le message passé à la fonction est du type chaîne.When the function is triggered, the message passed to the function is typed as a string.

Déclencheur - mise à l'échelleTrigger - scaling

Chaque instance d’une fonction déclenchée par un événement est sauvegardée par une seule instance EventProcessorHost.Each instance of an event triggered function is backed by a single EventProcessorHost instance. Le déclencheur (alimenté par Event Hubs) garantit qu’une seule instance EventProcessorHost peut obtenir un bail sur une partition donnée.The trigger (powered by Event Hubs) ensures that only one EventProcessorHost instance can get a lease on a given partition.

Prenons, par exemple, le hub d’événements suivant :For example, consider an Event Hub as follows:

  • 10 partitions10 partitions
  • 1 000 événements répartis uniformément sur toutes les partitions, avec 100 messages dans chaque partition1,000 events distributed evenly across all partitions, with 100 messages in each partition

Lorsque votre fonction est activée pour la première fois, il n’existe qu’une seule instance de cette fonction.When your function is first enabled, there is only one instance of the function. Nous appellerons la première instance de fonction Function_0.Let's call the first function instance Function_0. La fonction Function_0 comprend une seule instance de EventProcessorHost qui détient un bail sur les dix partitions.The Function_0 function has a single instance of EventProcessorHost that holds a lease on all ten partitions. Cette instance lit les événements des partitions 0 à 9.This instance is reading events from partitions 0-9. À partir de là, l’un des événements suivants se produit :From this point forward, one of the following happens:

  • Les nouvelles instances de fonction ne sont pas nécessaires : Function_0 est capable de traiter l’ensemble des 1 000 événements avant que la logique de mise à l’échelle Functions ne prenne effet.New function instances are not needed: Function_0 is able to process all 1,000 events before the Functions scaling logic take effect. Dans ce cas, l’intégralité des 1 000 messages sont traités par Function_0.In this case, all 1,000 messages are processed by Function_0.

  • Une instance de fonction supplémentaire est ajoutée : la logique de mise à l’échelle Functions détermine que si Function_0 a plus de messages qu’elle ne peut en traiter, une instance d’application de fonction (Function_1) est ajoutée.An additional function instance is added: If the Functions scaling logic determines that Function_0 has more messages than it can process, a new function app instance (Function_1) is created. Cette nouvelle fonction a également une instance associée de EventProcessorHost.This new function also has an associated instance of EventProcessorHost. Comme les hubs d’événements sous-jacents détectent qu’une nouvelle instance de l’hôte tente de lire des messages, ils équilibrent la charge des partitions entre ses instances d’hôte.As the underlying Event Hubs detect that a new host instance is trying read messages, it load balances the partitions across the its host instances. Par exemple, les partitions 0 à 4 peuvent être affectées à Function_0, et les partitions 5 à 9 à Function_1.For example, partitions 0-4 may be assigned to Function_0 and partitions 5-9 to Function_1.

  • N instances de fonction supplémentaires sont ajoutées : Si la logique de mise à l’échelle de Functions détermine que Function_0 et Function_1 ont plus de messages qu’elles ne peuvent en traiter, de nouvelles instances d’application de fonction Functions_N sont créées.N more function instances are added: If the Functions scaling logic determines that both Function_0 and Function_1 have more messages than they can process, new Functions_N function app instances are created. Des applications sont créées jusqu’au point où N est supérieur au nombre de partitions de hub d’événements.Apps are created to the point where N is greater than the number of event hub partitions. Dans notre exemple, Event Hubs équilibre la charge des partitions, en l’occurrence, sur les instances Function_0...Functions_9.In our example, Event Hubs again load balances the partitions, in this case across the instances Function_0...Functions_9.

Quand Functions effectue une mise à l’échelle, N instances est un nombre supérieur à celui des partitions du hub d’événements.When Functions scales, N instances is a number greater than the number of event hub partitions. Ainsi, des instances EventProcessorHost sont toujours disponibles pour obtenir des verrous sur les partitions, à mesure que celles-ci sont mises à disposition par les autres instances.This is done to ensure EventProcessorHost instances are available to obtain locks on partitions as they become available from other instances. Vous n’êtes facturé que pour les ressources utilisées lors de l’exécution de l’instance de la fonction.You are only charged for the resources used when the function instance executes. En d’autres mots, vous n’êtes pas facturé pour cet approvisionnement excessif.In other words, you are not charged for this over-provisioning.

Quand toutes les exécutions de fonction se terminent (avec ou sans erreurs), des points de contrôle sont ajoutés au compte de stockage associé.When all function execution completes (with or without errors), checkpoints are added to the associated storage account. Une fois les points de contrôle correctement créés, les 1 000 messages ne sont plus jamais récupérés.When check-pointing succeeds, all 1,000 messages are never retrieved again.

Déclencheur - exempleTrigger - example

Consultez l’exemple propre à un langage particulier :See the language-specific example:

Déclencheur - exemple C#Trigger - C# example

L’exemple suivant illustre un code de fonction C# qui consigne le corps du message du déclencheur de hub d’événements.The following example shows a C# function that logs the message body of the event hub trigger.

[FunctionName("EventHubTriggerCSharp")]
public static void Run([EventHubTrigger("samples-workitems", Connection = "EventHubConnectionAppSetting")] string myEventHubMessage, ILogger log)
{
    log.LogInformation($"C# function triggered to process a message: {myEventHubMessage}");
}

Pour accéder aux métadonnées d’événement en code de fonction, effectuez une liaison avec l’objet EventData (nécessite une instruction using pour Microsoft.Azure.EventHubs).To get access to event metadata in function code, bind to an EventData object (requires a using statement for Microsoft.Azure.EventHubs). Vous pouvez également accéder aux mêmes propriétés à l’aide d’expressions de liaison dans la signature de la méthode.You can also access the same properties by using binding expressions in the method signature. L’exemple suivant montre deux façons d’obtenir les mêmes données :The following example shows both ways to get the same data:

[FunctionName("EventHubTriggerCSharp")]
public static void Run(
    [EventHubTrigger("samples-workitems", Connection = "EventHubConnectionAppSetting")] EventData myEventHubMessage,
    DateTime enqueuedTimeUtc,
    Int64 sequenceNumber,
    string offset,
    ILogger log)
{
    log.LogInformation($"Event: {Encoding.UTF8.GetString(myEventHubMessage.Body)}");
    // Metadata accessed by binding to EventData
    log.LogInformation($"EnqueuedTimeUtc={myEventHubMessage.SystemProperties.EnqueuedTimeUtc}");
    log.LogInformation($"SequenceNumber={myEventHubMessage.SystemProperties.SequenceNumber}");
    log.LogInformation($"Offset={myEventHubMessage.SystemProperties.Offset}");
    // Metadata accessed by using binding expressions in method parameters
    log.LogInformation($"EnqueuedTimeUtc={enqueuedTimeUtc}");
    log.LogInformation($"SequenceNumber={sequenceNumber}");
    log.LogInformation($"Offset={offset}");
}

Pour recevoir des événements en lot, transformez string ou EventData en tableau.To receive events in a batch, make string or EventData an array.

Notes

Lors de la réception dans un lot, vous ne pouvez pas établir de liaison avec les paramètres de la méthode comme dans l’exemple ci-dessus avec DateTime enqueuedTimeUtc et vous devez les recevoir de chaque objet EventData.When receiving in a batch you cannot bind to method parameters like in the above example with DateTime enqueuedTimeUtc and must receive these from each EventData object

[FunctionName("EventHubTriggerCSharp")]
public static void Run([EventHubTrigger("samples-workitems", Connection = "EventHubConnectionAppSetting")] EventData[] eventHubMessages, ILogger log)
{
    foreach (var message in eventHubMessages)
    {
        log.LogInformation($"C# function triggered to process a message: {Encoding.UTF8.GetString(message.Body)}");
        log.LogInformation($"EnqueuedTimeUtc={message.SystemProperties.EnqueuedTimeUtc}");
    }
}

Déclencheur - exemple Script C#Trigger - C# script example

L’exemple suivant illustre une liaison de déclencheur de hub d’événements dans un fichier function.json et une fonction de script C# qui utilise la liaison.The following example shows an event hub trigger binding in a function.json file and a C# script function that uses the binding. La fonction consigne le corps du message du déclencheur de hub d’événements.The function logs the message body of the event hub trigger.

Les exemples suivants illustrent les données de liaison Event Hubs dans le fichier function.json.The following examples show Event Hubs binding data in the function.json file.

Versions 2.x et ultérieuresVersion 2.x and higher

{
  "type": "eventHubTrigger",
  "name": "myEventHubMessage",
  "direction": "in",
  "eventHubName": "MyEventHub",
  "connection": "myEventHubReadConnectionAppSetting"
}

Version 1.xVersion 1.x

{
  "type": "eventHubTrigger",
  "name": "myEventHubMessage",
  "direction": "in",
  "path": "MyEventHub",
  "connection": "myEventHubReadConnectionAppSetting"
}

Voici le code Script C# :Here's the C# script code:

using System;

public static void Run(string myEventHubMessage, TraceWriter log)
{
    log.Info($"C# function triggered to process a message: {myEventHubMessage}");
}

Pour accéder aux métadonnées d’événement en code de fonction, effectuez une liaison avec l’objet EventData (nécessite une instruction using pour Microsoft.Azure.EventHubs).To get access to event metadata in function code, bind to an EventData object (requires a using statement for Microsoft.Azure.EventHubs). Vous pouvez également accéder aux mêmes propriétés à l’aide d’expressions de liaison dans la signature de la méthode.You can also access the same properties by using binding expressions in the method signature. L’exemple suivant montre deux façons d’obtenir les mêmes données :The following example shows both ways to get the same data:

#r "Microsoft.Azure.EventHubs"

using System.Text;
using System;
using Microsoft.ServiceBus.Messaging;
using Microsoft.Azure.EventHubs;

public static void Run(EventData myEventHubMessage,
    DateTime enqueuedTimeUtc,
    Int64 sequenceNumber,
    string offset,
    TraceWriter log)
{
    log.Info($"Event: {Encoding.UTF8.GetString(myEventHubMessage.Body)}");
    log.Info($"EnqueuedTimeUtc={myEventHubMessage.SystemProperties.EnqueuedTimeUtc}");
    log.Info($"SequenceNumber={myEventHubMessage.SystemProperties.SequenceNumber}");
    log.Info($"Offset={myEventHubMessage.SystemProperties.Offset}");

    // Metadata accessed by using binding expressions
    log.Info($"EnqueuedTimeUtc={enqueuedTimeUtc}");
    log.Info($"SequenceNumber={sequenceNumber}");
    log.Info($"Offset={offset}");
}

Pour recevoir des événements en lot, transformez string ou EventData en tableau :To receive events in a batch, make string or EventData an array:

public static void Run(string[] eventHubMessages, TraceWriter log)
{
    foreach (var message in eventHubMessages)
    {
        log.Info($"C# function triggered to process a message: {message}");
    }
}

Déclencheur - exemple F#Trigger - F# example

L’exemple suivant illustre une liaison de déclencheur Event Hub dans un fichier function.json et une fonction F# qui utilise la liaison.The following example shows an event hub trigger binding in a function.json file and an F# function that uses the binding. La fonction consigne le corps du message du déclencheur de hub d’événements.The function logs the message body of the event hub trigger.

Les exemples suivants illustrent les données de liaison Event Hubs dans le fichier function.json.The following examples show Event Hubs binding data in the function.json file.

Versions 2.x et ultérieuresVersion 2.x and higher

{
  "type": "eventHubTrigger",
  "name": "myEventHubMessage",
  "direction": "in",
  "eventHubName": "MyEventHub",
  "connection": "myEventHubReadConnectionAppSetting"
}

Version 1.xVersion 1.x

{
  "type": "eventHubTrigger",
  "name": "myEventHubMessage",
  "direction": "in",
  "path": "MyEventHub",
  "connection": "myEventHubReadConnectionAppSetting"
}

Voici le code F# :Here's the F# code:

let Run(myEventHubMessage: string, log: TraceWriter) =
    log.Log(sprintf "F# eventhub trigger function processed work item: %s" myEventHubMessage)

Déclencheur - exemple JavaScriptTrigger - JavaScript example

L’exemple suivant illustre une liaison de déclencheur Event Hub dans un fichier function.json et une fonction JavaScript qui utilise la liaison.The following example shows an event hub trigger binding in a function.json file and a JavaScript function that uses the binding. La fonction lit les métadonnées d’événement et enregistre le message.The function reads event metadata and logs the message.

Les exemples suivants illustrent les données de liaison Event Hubs dans le fichier function.json.The following examples show Event Hubs binding data in the function.json file.

Versions 2.x et ultérieuresVersion 2.x and higher

{
  "type": "eventHubTrigger",
  "name": "myEventHubMessage",
  "direction": "in",
  "eventHubName": "MyEventHub",
  "connection": "myEventHubReadConnectionAppSetting"
}

Version 1.xVersion 1.x

{
  "type": "eventHubTrigger",
  "name": "myEventHubMessage",
  "direction": "in",
  "path": "MyEventHub",
  "connection": "myEventHubReadConnectionAppSetting"
}

Voici le code JavaScript :Here's the JavaScript code:

module.exports = function (context, myEventHubMessage) {
    context.log('Function triggered to process a message: ', myEventHubMessage);
    context.log('EnqueuedTimeUtc =', context.bindingData.enqueuedTimeUtc);
    context.log('SequenceNumber =', context.bindingData.sequenceNumber);
    context.log('Offset =', context.bindingData.offset);

    context.done();
};

Pour recevoir les événements dans un lot, définissez cardinality sur many dans le fichier function.json, comme le montrent les exemples suivants.To receive events in a batch, set cardinality to many in the function.json file, as shown in the following examples.

Versions 2.x et ultérieuresVersion 2.x and higher

{
  "type": "eventHubTrigger",
  "name": "eventHubMessages",
  "direction": "in",
  "eventHubName": "MyEventHub",
  "cardinality": "many",
  "connection": "myEventHubReadConnectionAppSetting"
}

Version 1.xVersion 1.x

{
  "type": "eventHubTrigger",
  "name": "eventHubMessages",
  "direction": "in",
  "path": "MyEventHub",
  "cardinality": "many",
  "connection": "myEventHubReadConnectionAppSetting"
}

Voici le code JavaScript :Here's the JavaScript code:

module.exports = function (context, eventHubMessages) {
    context.log(`JavaScript eventhub trigger function called for message array ${eventHubMessages}`);

    eventHubMessages.forEach((message, index) => {
        context.log(`Processed message ${message}`);
        context.log(`EnqueuedTimeUtc = ${context.bindingData.enqueuedTimeUtcArray[index]}`);
        context.log(`SequenceNumber = ${context.bindingData.sequenceNumberArray[index]}`);
        context.log(`Offset = ${context.bindingData.offsetArray[index]}`);
    });

    context.done();
};

Déclencheur – Exemple PythonTrigger - Python example

L’exemple suivant illustre une liaison de déclencheur Event Hub dans un fichier function.json et une fonction Python qui utilise la liaison.The following example shows an event hub trigger binding in a function.json file and a Python function that uses the binding. La fonction lit les métadonnées d’événement et enregistre le message.The function reads event metadata and logs the message.

Les exemples suivants illustrent les données de liaison Event Hubs dans le fichier function.json.The following examples show Event Hubs binding data in the function.json file.

{
  "type": "eventHubTrigger",
  "name": "event",
  "direction": "in",
  "eventHubName": "MyEventHub",
  "connection": "myEventHubReadConnectionAppSetting"
}

Voici le code Python :Here's the Python code:

import logging
import azure.functions as func


def main(event: func.EventHubEvent):
    logging.info('Function triggered to process a message: ', event.get_body())
    logging.info('  EnqueuedTimeUtc =', event.enqueued_time)
    logging.info('  SequenceNumber =', event.sequence_number)
    logging.info('  Offset =', event.offset)

Déclencheur - exemple JavaTrigger - Java example

L’exemple suivant illustre une liaison de déclencheur Event Hub dans un fichier function.json et une fonction Java qui utilise la liaison.The following example shows an Event Hub trigger binding in a function.json file and a Java function that uses the binding. La fonction consigne le corps du message du déclencheur Event Hub.The function logs the message body of the Event Hub trigger.

{
  "type": "eventHubTrigger",
  "name": "msg",
  "direction": "in",
  "eventHubName": "myeventhubname",
  "connection": "myEventHubReadConnectionAppSetting"
}
@FunctionName("ehprocessor")
public void eventHubProcessor(
  @EventHubTrigger(name = "msg",
                  eventHubName = "myeventhubname",
                  connection = "myconnvarname") String message,
       final ExecutionContext context )
       {
          context.getLogger().info(message);
 }

Dans la bibliothèque du runtime des fonctions Java, utilisez l’annotation EventHubTrigger sur les paramètres dont la valeur proviendrait d’Event Hub.In the Java functions runtime library, use the EventHubTrigger annotation on parameters whose value would come from Event Hub. Les paramètres ayant ces annotations entraînent l’exécution de la fonction quand un événement se produit.Parameters with these annotations cause the function to run when an event arrives. Vous pouvez utiliser cette annotation avec des types Java natifs, des objets POJO ou des valeurs Null à l’aide de Optional<T>.This annotation can be used with native Java types, POJOs, or nullable values using Optional<T>.

Déclencheur - attributsTrigger - attributes

Dans les bibliothèques de classes C#, utilisez l’attribut EventHubTriggerAttribute.In C# class libraries, use the EventHubTriggerAttribute attribute.

Le constructeur de l’attribut prend le nom du hub d’événements, le nom du groupe de consommateurs et le nom d’un paramètre d’application qui contient la chaîne de connexion.The attribute's constructor takes the name of the event hub, the name of the consumer group, and the name of an app setting that contains the connection string. Pour plus d’informations sur ces paramètres, consultez la section de configuration du déclencheur.For more information about these settings, see the trigger configuration section. Voici un exemple d’attribut EventHubTriggerAttribute :Here's an EventHubTriggerAttribute attribute example:

[FunctionName("EventHubTriggerCSharp")]
public static void Run([EventHubTrigger("samples-workitems", Connection = "EventHubConnectionAppSetting")] string myEventHubMessage, ILogger log)
{
    ...
}

Pour obtenir un exemple complet, consultez Déclencheur - exemple C#.For a complete example, see Trigger - C# example.

Déclencheur - configurationTrigger - configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json et l’attribut EventHubTrigger.The following table explains the binding configuration properties that you set in the function.json file and the EventHubTrigger attribute.

Propriété function.jsonfunction.json property Propriété d’attributAttribute property DescriptionDescription
typetype n/an/a Cette propriété doit être définie sur eventHubTrigger.Must be set to eventHubTrigger. Cette propriété est définie automatiquement lorsque vous créez le déclencheur dans le portail Azure.This property is set automatically when you create the trigger in the Azure portal.
directiondirection n/an/a Cette propriété doit être définie sur in.Must be set to in. Cette propriété est définie automatiquement lorsque vous créez le déclencheur dans le portail Azure.This property is set automatically when you create the trigger in the Azure portal.
namename n/an/a Nom de la variable qui représente l’élément d’événement dans le code de la fonction.The name of the variable that represents the event item in function code.
pathpath EventHubNameEventHubName Functions 1.x uniquement.Functions 1.x only. Nom du hub d’événements.The name of the event hub. Lorsque le nom d’Event Hub est également présent dans la chaîne de connexion, sa valeur remplace cette propriété lors de l’exécution.When the event hub name is also present in the connection string, that value overrides this property at runtime.
eventHubNameeventHubName EventHubNameEventHubName Functions 2.x et versions ultérieures.Functions 2.x and higher. Nom du hub d’événements.The name of the event hub. Lorsque le nom d’Event Hub est également présent dans la chaîne de connexion, sa valeur remplace cette propriété lors de l’exécution.When the event hub name is also present in the connection string, that value overrides this property at runtime. Peut être référencé via les paramètres d’application %eventHubName%Can be referenced via app settings %eventHubName%
consumerGroupconsumerGroup ConsumerGroupConsumerGroup Propriété facultative qui définit le groupe de consommateurs utilisé pour l’abonnement à des événements dans le hub.An optional property that sets the consumer group used to subscribe to events in the hub. En cas d’omission, le groupe de consommateurs $Default est utilisé.If omitted, the $Default consumer group is used.
cardinalitécardinality n/an/a Pour Javascript.For Javascript. Définissez sur many afin d’activer le traitement par lot.Set to many in order to enable batching. Si omis ou défini sur one, un message unique est transmis à la fonction.If omitted or set to one, a single message is passed to the function.
connectionconnection ConnectionConnection Le nom d’un paramètre d’application qui contient la chaîne de connexion à l’espace de noms du hub d’événements.The name of an app setting that contains the connection string to the event hub's namespace. Copiez cette chaîne de connexion en cliquant sur le bouton Informations de connexion pour l’espace de noms, et non pour le hub d’événements lui-même.Copy this connection string by clicking the Connection Information button for the namespace, not the event hub itself. Cette chaîne de connexion doit avoir au moins des droits de lecture pour activer le déclencheur.This connection string must have at least read permissions to activate the trigger.

Quand vous développez localement, les paramètres d’application vont dans le fichier local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Déclencheur - métadonnées d’événementTrigger - event metadata

Le déclencheur Event Hubs fournit plusieurs propriétés de métadonnées.The Event Hubs trigger provides several metadata properties. Ces propriétés peuvent être utilisées dans les expressions de liaison dans d’autres liaisons ou en tant que paramètres dans votre code.These properties can be used as part of binding expressions in other bindings or as parameters in your code. Ce sont les propriétés de la classe EventData.These are properties of the EventData class.

PropriétéProperty TypeType DescriptionDescription
PartitionContext PartitionContextPartitionContext Instance PartitionContext.The PartitionContext instance.
EnqueuedTimeUtc DateTime Le temps de file d’attente en UTC.The enqueued time in UTC.
Offset string Le décalage des données par rapport au flux de données de la partition Event Hub.The offset of the data relative to the Event Hub partition stream. Le décalage est une marque ou un identificateur pour un événement au sein du flux Event Hubs.The offset is a marker or identifier for an event within the Event Hubs stream. L’identificateur est unique au sein d’une partition du flux Event Hubs.The identifier is unique within a partition of the Event Hubs stream.
PartitionKey string La partition vers laquelle les données d’événement doivent être envoyées.The partition to which event data should be sent.
Properties IDictionary<String,Object> Les propriétés d’utilisateur pour les données d’événements.The user properties of the event data.
SequenceNumber Int64 Le numéro de séquence logique de l’événement.The logical sequence number of the event.
SystemProperties IDictionary<String,Object> Les propriétés système, y compris les données d’événement.The system properties, including the event data.

Consultez les exemples de code qui utilisent ces propriétés précédemment dans cet article.See code examples that use these properties earlier in this article.

Déclencheur - propriétés de host.jsonTrigger - host.json properties

Le fichier host.json contient les paramètres qui contrôlent le comportement du déclencheur Event Hubs.The host.json file contains settings that control Event Hubs trigger behavior.

{
    "eventHub": {
      "maxBatchSize": 64,
      "prefetchCount": 256,
      "batchCheckpointFrequency": 1
    }
}
PropriétéProperty DefaultDefault DescriptionDescription
maxBatchSizemaxBatchSize 6464 Nombre d’événements maximal reçu par boucle de réception.The maximum event count received per receive loop.
prefetchCountprefetchCount n/an/a Valeur PrefetchCount par défaut qui est utilisée par l’instance EventProcessorHost sous-jacente.The default PrefetchCount that will be used by the underlying EventProcessorHost.
batchCheckpointFrequencybatchCheckpointFrequency 11 Nombre de lots d’événements à traiter avant de créer un point de contrôle de curseur EventHub.The number of event batches to process before creating an EventHub cursor checkpoint.

OutputOutput

Utilisez la liaison de sortie Event Hubs pour écrire des événements dans un flux d’événements du hub d’événements.Use the Event Hubs output binding to write events to an event stream. Vous devez disposer de l’autorisation d’envoi à un hub d’événements pour y écrire les événements.You must have send permission to an event hub to write events to it.

Vérifiez que les références de package nécessaires sont en place avant d’essayer d’implémenter une liaison de sortie.Make sure the required package references are in place before you try to implement an ouput binding.

Sortie - exempleOutput - example

Consultez l’exemple propre à un langage particulier :See the language-specific example:

Sortie - exemple C#Output - C# example

L’exemple suivant illustre une fonction C# qui écrit un message dans un hub d’événements, en utilisant la valeur retournée par la méthode comme sortie :The following example shows a C# function that writes a message to an event hub, using the method return value as the output:

[FunctionName("EventHubOutput")]
[return: EventHub("outputEventHubMessage", Connection = "EventHubConnectionAppSetting")]
public static string Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
{
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    return $"{DateTime.Now}";
}

L’exemple suivant montre comment utiliser l’interface IAsyncCollector pour envoyer un lot de messages.The following example shows how to use the IAsyncCollector interface to send a batch of messages. Ce scénario est courant lorsque vous traitez des messages provenant d’un hub d’événements et que vous envoyez le résultat à un autre hub d’événements.This scenario is common when you are processing messages coming from one Event Hub and sending the result to another Event Hub.

[FunctionName("EH2EH")]
public static async Task Run(
    [EventHubTrigger("source", Connection = "EventHubConnectionAppSetting")] EventData[] events,
    [EventHub("dest", Connection = "EventHubConnectionAppSetting")]IAsyncCollector<string> outputEvents,
    ILogger log)
{
    foreach (EventData eventData in events)
    {
        // do some processing:
        var myProcessedEvent = DoSomething(eventData);

        // then send the message
        await outputEvents.AddAsync(JsonConvert.SerializeObject(myProcessedEvent));
    }
}

Sortie - exemple Script C#Output - C# script example

L’exemple suivant illustre une liaison de déclencheur de hub d’événements dans un fichier function.json et une fonction de script C# qui utilise la liaison.The following example shows an event hub trigger binding in a function.json file and a C# script function that uses the binding. La fonction écrit un message dans un hub d’événements.The function writes a message to an event hub.

Les exemples suivants illustrent les données de liaison Event Hubs dans le fichier function.json.The following examples show Event Hubs binding data in the function.json file. Le premier exemple concerne Functions 2.x et versions ultérieures, tandis que le second concerne Functions 1.x.The first example is for Functions 2.x and higher, and the second one is for Functions 1.x.

{
    "type": "eventHub",
    "name": "outputEventHubMessage",
    "eventHubName": "myeventhub",
    "connection": "MyEventHubSendAppSetting",
    "direction": "out"
}
{
    "type": "eventHub",
    "name": "outputEventHubMessage",
    "path": "myeventhub",
    "connection": "MyEventHubSendAppSetting",
    "direction": "out"
}

Voici le code Script C# qui crée un message :Here's C# script code that creates one message:

using System;
using Microsoft.Extensions.Logging;

public static void Run(TimerInfo myTimer, out string outputEventHubMessage, ILogger log)
{
    String msg = $"TimerTriggerCSharp1 executed at: {DateTime.Now}";
    log.LogInformation(msg);   
    outputEventHubMessage = msg;
}

Voici le code de script C# qui crée plusieurs messages :Here's C# script code that creates multiple messages:

public static void Run(TimerInfo myTimer, ICollector<string> outputEventHubMessage, ILogger log)
{
    string message = $"Message created at: {DateTime.Now}";
    log.LogInformation(message);
    outputEventHubMessage.Add("1 " + message);
    outputEventHubMessage.Add("2 " + message);
}

Sortie - exemple F#Output - F# example

L’exemple suivant illustre une liaison de déclencheur Event Hub dans un fichier function.json et une fonction F# qui utilise la liaison.The following example shows an event hub trigger binding in a function.json file and an F# function that uses the binding. La fonction écrit un message dans un hub d’événements.The function writes a message to an event hub.

Les exemples suivants illustrent les données de liaison Event Hubs dans le fichier function.json.The following examples show Event Hubs binding data in the function.json file. Le premier exemple concerne Functions 2.x et versions ultérieures, tandis que le second concerne Functions 1.x.The first example is for Functions 2.x and higher, and the second one is for Functions 1.x.

{
    "type": "eventHub",
    "name": "outputEventHubMessage",
    "eventHubName": "myeventhub",
    "connection": "MyEventHubSendAppSetting",
    "direction": "out"
}
{
    "type": "eventHub",
    "name": "outputEventHubMessage",
    "path": "myeventhub",
    "connection": "MyEventHubSendAppSetting",
    "direction": "out"
}

Voici le code F# :Here's the F# code:

let Run(myTimer: TimerInfo, outputEventHubMessage: byref<string>, log: ILogger) =
    let msg = sprintf "TimerTriggerFSharp1 executed at: %s" DateTime.Now.ToString()
    log.LogInformation(msg);
    outputEventHubMessage <- msg;

Sortie - exemple JavaScriptOutput - JavaScript example

L’exemple suivant illustre une liaison de déclencheur Event Hub dans un fichier function.json et une fonction JavaScript qui utilise la liaison.The following example shows an event hub trigger binding in a function.json file and a JavaScript function that uses the binding. La fonction écrit un message dans un hub d’événements.The function writes a message to an event hub.

Les exemples suivants illustrent les données de liaison Event Hubs dans le fichier function.json.The following examples show Event Hubs binding data in the function.json file. Le premier exemple concerne Functions 2.x et versions ultérieures, tandis que le second concerne Functions 1.x.The first example is for Functions 2.x and higher, and the second one is for Functions 1.x.

{
    "type": "eventHub",
    "name": "outputEventHubMessage",
    "eventHubName": "myeventhub",
    "connection": "MyEventHubSendAppSetting",
    "direction": "out"
}
{
    "type": "eventHub",
    "name": "outputEventHubMessage",
    "path": "myeventhub",
    "connection": "MyEventHubSendAppSetting",
    "direction": "out"
}

Voici le code JavaScript qui envoie un message unique :Here's JavaScript code that sends a single message:

module.exports = function (context, myTimer) {
    var timeStamp = new Date().toISOString();
    context.log('Message created at: ', timeStamp);   
    context.bindings.outputEventHubMessage = "Message created at: " + timeStamp;
    context.done();
};

Voici le code JavaScript qui envoie plusieurs messages :Here's JavaScript code that sends multiple messages:

module.exports = function(context) {
    var timeStamp = new Date().toISOString();
    var message = 'Message created at: ' + timeStamp;

    context.bindings.outputEventHubMessage = [];

    context.bindings.outputEventHubMessage.push("1 " + message);
    context.bindings.outputEventHubMessage.push("2 " + message);
    context.done();
};

Sortie - Exemple PythonOutput - Python example

L’exemple suivant illustre une liaison de déclencheur Event Hub dans un fichier function.json et une fonction Python qui utilise la liaison.The following example shows an event hub trigger binding in a function.json file and a Python function that uses the binding. La fonction écrit un message dans un hub d’événements.The function writes a message to an event hub.

Les exemples suivants illustrent les données de liaison Event Hubs dans le fichier function.json.The following examples show Event Hubs binding data in the function.json file.

{
    "type": "eventHub",
    "name": "$return",
    "eventHubName": "myeventhub",
    "connection": "MyEventHubSendAppSetting",
    "direction": "out"
}

Voici le code Python qui envoie un message unique :Here's Python code that sends a single message:

import datetime
import logging
import azure.functions as func


def main(timer: func.TimerRequest) -> str:
    timestamp = datetime.datetime.utcnow()
    logging.info('Message created at: %s', timestamp)
    return 'Message created at: {}'.format(timestamp)

Sortie : exemple JavaOutput - Java example

L’exemple suivant illustre une fonction Java qui écrit un message contenant l’heure actuelle à l’attention d’un Event Hub.The following example shows a Java function that writes a message containing the current time to an Event Hub.

@FunctionName("sendTime")
@EventHubOutput(name = "event", eventHubName = "samples-workitems", connection = "AzureEventHubConnection")
public String sendTime(
   @TimerTrigger(name = "sendTimeTrigger", schedule = "0 */5 * * * *") String timerInfo)  {
     return LocalDateTime.now().toString();
 }

Dans la bibliothèque du runtime des fonctions Java, utilisez l’annotation @EventHubOutput sur les paramètres dont la valeur serait publiée à l’attention d’Event Hub.In the Java functions runtime library, use the @EventHubOutput annotation on parameters whose value would be published to Event Hub. Le type de paramètre doit être OutputBinding<T>, où T désigne un POJO ou n’importe quel type Java natif.The parameter should be of type OutputBinding<T> , where T is a POJO or any native Java type.

Sortie - attributsOutput - attributes

Dans les bibliothèques de classes C#, utilisez l’attribut EventHubAttribute.For C# class libraries, use the EventHubAttribute attribute.

Le constructeur de l’attribut prend le nom du hub d’événements, le hub d’événements et le nom d’un paramètre d’application qui contient la chaîne de connexion.The attribute's constructor takes the name of the event hub and the name of an app setting that contains the connection string. Pour plus d’informations sur ces paramètres, consultez Sortie - configuration.For more information about these settings, see Output - configuration. Voici un exemple d’attribut EventHub :Here's an EventHub attribute example:

[FunctionName("EventHubOutput")]
[return: EventHub("outputEventHubMessage", Connection = "EventHubConnectionAppSetting")]
public static string Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
{
    ...
}

Pour obtenir un exemple complet, consultez Sortie - exemple C#.For a complete example, see Output - C# example.

Sortie - configurationOutput - configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json et l’attribut EventHub.The following table explains the binding configuration properties that you set in the function.json file and the EventHub attribute.

Propriété function.jsonfunction.json property Propriété d’attributAttribute property DescriptionDescription
typetype n/an/a Doit être défini sur eventHub.Must be set to "eventHub".
directiondirection n/an/a Doit être défini sur « out ».Must be set to "out". Ce paramètre est défini automatiquement lorsque vous créez la liaison dans le portail Azure.This parameter is set automatically when you create the binding in the Azure portal.
namename n/an/a Nom de variable utilisé dans le code de la fonction qui représente l’événement.The variable name used in function code that represents the event.
pathpath EventHubNameEventHubName Functions 1.x uniquement.Functions 1.x only. Nom du hub d’événements.The name of the event hub. Lorsque le nom d’Event Hub est également présent dans la chaîne de connexion, sa valeur remplace cette propriété lors de l’exécution.When the event hub name is also present in the connection string, that value overrides this property at runtime.
eventHubNameeventHubName EventHubNameEventHubName Functions 2.x et versions ultérieures.Functions 2.x and higher. Nom du hub d’événements.The name of the event hub. Lorsque le nom d’Event Hub est également présent dans la chaîne de connexion, sa valeur remplace cette propriété lors de l’exécution.When the event hub name is also present in the connection string, that value overrides this property at runtime.
connectionconnection ConnectionConnection Le nom d’un paramètre d’application qui contient la chaîne de connexion à l’espace de noms du hub d’événements.The name of an app setting that contains the connection string to the event hub's namespace. Copiez cette chaîne de connexion en cliquant sur le bouton Informations de connexion pour l’espace de noms, et non pour le hub d’événements lui-même.Copy this connection string by clicking the Connection Information button for the namespace, not the event hub itself. Cette chaîne de connexion doit disposer d’autorisations d’envoi pour envoyer le message au flux d’événements.This connection string must have send permissions to send the message to the event stream.

Quand vous développez localement, les paramètres d’application vont dans le fichier local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Sortie - utilisationOutput - usage

Dans C# et Script C#, envoyez des messages en utilisant un paramètre de méthode comme out string paramName.In C# and C# script, send messages by using a method parameter such as out string paramName. Dans Script C#, paramName est la valeur spécifiée dans la propriété name de function.json.In C# script, paramName is the value specified in the name property of function.json. Pour écrire plusieurs messages, vous pouvez utiliser ICollector<string> ou IAsyncCollector<string> à la place de out string.To write multiple messages, you can use ICollector<string> or IAsyncCollector<string> in place of out string.

Dans JavaScript, accédez à l’événement de sortie à l’aide de context.bindings.<name>.In JavaScript, access the output event by using context.bindings.<name>. <name> est la valeur spécifiée dans la propriété name de function.json.<name> is the value specified in the name property of function.json.

Exceptions et codes de retourExceptions and return codes

LiaisonBinding Informations de référenceReference
Event HubEvent Hub Guide des opérationsOperations Guide

Paramètres host.jsonhost.json settings

Cette section décrit les paramètres de configuration globaux disponibles pour cette liaison dans les versions 2.x et ultérieures.This section describes the global configuration settings available for this binding in versions 2.x and higher. L’exemple de fichier host.json ci-dessous contient seulement les paramètres des versions 2.x et ultérieures pour cette liaison.The example host.json file below contains only the version 2.x+ settings for this binding. Pour plus d’informations sur les paramètres de configuration globaux dans les versions 2.x et ultérieures, consultez Informations de référence sur le fichier host.json pour Azure Functions.For more information about global configuration settings in versions 2.x and beyond, see host.json reference for Azure Functions.

Notes

Pour obtenir une référence de host.json dans Functions 1.x, consultez Informations de référence sur le fichier host.json pour Azure Functions 1.x.For a reference of host.json in Functions 1.x, see host.json reference for Azure Functions 1.x.

{
    "version": "2.0",
    "extensions": {
        "eventHubs": {
            "batchCheckpointFrequency": 5,
            "eventProcessorOptions": {
                "maxBatchSize": 256,
                "prefetchCount": 512
            }
        }
    }
}  
PropriétéProperty DefaultDefault DescriptionDescription
maxBatchSizemaxBatchSize 6464 Nombre d’événements maximal reçu par boucle de réception.The maximum event count received per receive loop.
prefetchCountprefetchCount n/an/a Valeur PrefetchCount par défaut qui est utilisée par l’instance EventProcessorHost sous-jacente.The default PrefetchCount that will be used by the underlying EventProcessorHost.
batchCheckpointFrequencybatchCheckpointFrequency 11 Nombre de lots d’événements à traiter avant de créer un point de contrôle de curseur EventHub.The number of event batches to process before creating an EventHub cursor checkpoint.

Étapes suivantesNext steps