Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment utiliser des liaisons Azure Event Hubs pour Azure Functions. Azure Functions prend en charge les liaisons de déclencheur et de sortie pour Event Hubs.
Pour plus d’informations sur les détails d’installation et de configuration, consultez la vue d’ensemble.
Utilisez la liaison de sortie Event Hubs pour écrire des événements dans un flux d’événements du hub d’événements. Vous devez disposer de l’autorisation d’envoi à un hub d’événements pour y écrire les événements.
Vérifiez que les références de package nécessaires sont en place avant d’essayer d’implémenter une liaison de sortie.
Important
Cet article utilise des onglets pour prendre en charge plusieurs versions du modèle de programmation Node.js. Le modèle v4 est en disponibilité générale. Il est conçu pour offrir une expérience plus flexible et intuitive aux développeurs JavaScript et TypeScript. Pour plus d’informations sur le fonctionnement du modèle v4, reportez-vous au guide du développeur Azure Functions Node.js. Pour plus d’informations sur les différences entre v3 et v4, consultez le guide de migration.
Azure Functions prend en charge deux modèles de programmation pour Python. La façon dont vous définissez vos liaisons dépend du modèle de programmation choisi.
Le modèle de programmation Python v2 vous permet de définir des liaisons à l’aide de décorateurs directement dans votre code de fonction Python. Pour plus d’informations, consultez le guide du développeur Python.
Cet article prend en compte les deux modèles de programmation.
Exemple
Le support Go n’est pas disponible pour ce liaison pour le moment.
L’exemple suivant illustre une fonction C# qui écrit une chaîne de messages dans un Event Hub, en utilisant la valeur renvoyée par la méthode comme sortie :
[Function(nameof(EventHubFunction))]
[FixedDelayRetry(5, "00:00:10")]
[EventHubOutput("dest", Connection = "EventHubConnection")]
public string EventHubFunction(
[EventHubTrigger("src", Connection = "EventHubConnection")] string[] input,
FunctionContext context)
{
_logger.LogInformation("First Event Hubs triggered message: {msg}", input[0]);
var message = $"Output message created at {DateTime.Now}";
return message;
}
L’exemple suivant montre une fonction TypeScript déclenchée par le minuteur qui envoie un seul message à un Event hub :
import { app, InvocationContext, output, Timer } from '@azure/functions';
export async function timerTrigger1(myTimer: Timer, context: InvocationContext): Promise<string> {
const timeStamp = new Date().toISOString();
return `Message created at: ${timeStamp}`;
}
app.timer('timerTrigger1', {
schedule: '0 */5 * * * *',
return: output.eventHub({
eventHubName: 'myeventhub',
connection: 'MyEventHubSendAppSetting',
}),
handler: timerTrigger1,
});
Pour générer plusieurs messages, retournez un tableau au lieu d’un seul objet. Par exemple :
const timeStamp = new Date().toISOString();
const message = `Message created at: ${timeStamp}`;
return [`1: ${message}`, `2: ${message}`];
L’exemple suivant montre une fonction JavaScript déclenchée par le minuteur qui envoie un seul message à un Event hub :
const { app, output } = require('@azure/functions');
const eventHubOutput = output.eventHub({
eventHubName: 'myeventhub',
connection: 'MyEventHubSendAppSetting',
});
app.timer('timerTrigger1', {
schedule: '0 */5 * * * *',
return: eventHubOutput,
handler: (myTimer, context) => {
const timeStamp = new Date().toISOString();
return `Message created at: ${timeStamp}`;
},
});
Pour générer plusieurs messages, retournez un tableau au lieu d’un seul objet. Par exemple :
const timeStamp = new Date().toISOString();
const message = `Message created at: ${timeStamp}`;
return [`1: ${message}`, `2: ${message}`];
Des exemples PowerShell complets sont à venir.
L’exemple suivant montre une liaison de déclencheur Event Hub et une fonction Python qui utilise la liaison. La fonction écrit un message dans un hub d’événements. L’exemple dépend de l’utilisation du modèle de programmation v1 ou v2 Python.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="eventhub_output")
@app.route(route="eventhub_output")
@app.event_hub_output(arg_name="event",
event_hub_name="<EVENT_HUB_NAME>",
connection="<CONNECTION_SETTING>")
def eventhub_output(req: func.HttpRequest, event: func.Out[str]):
body = req.get_body()
if body is not None:
event.set(body.decode('utf-8'))
else:
logging.info('req body is none')
return 'ok'
Voici Python code qui envoie plusieurs messages :
import logging
import azure.functions as func
from typing import List
app = func.FunctionApp()
@app.function_name(name="eventhub_output")
@app.route(route="eventhub_output")
@app.event_hub_output(arg_name="event",
event_hub_name="<EVENT_HUB_NAME>",
connection="<CONNECTION_SETTING>")
def eventhub_output(req: func.HttpRequest, event: func.Out[List[str]]) -> func.HttpResponse:
my_messages=["message1", "message2","message3"]
event.set(my_messages)
return func.HttpResponse(f"Messages sent")
L’exemple suivant montre une fonction Java qui écrit un message contenant l’heure actuelle dans un hub d’événements.
@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 d’exécution Java functions, utilisez l’annotation @EventHubOutput sur les paramètres dont la valeur est publiée sur Event Hubs. Le paramètre doit être de type OutputBinding<T>, où T est un poJO ou tout type de Java natif.
Attributs
Les bibliothèques C# In-process et de processus Worker isolé utilisent des attributs pour configurer la liaison. Le script C# utilise à la place un fichier de configuration function.json comme décrit dans le guide de script C#.
Utilisez l’attribut [EventHubOutputAttribute] pour définir une liaison de sortie vers un Event Hub, qui prend en charge les propriétés suivantes.
| Paramètres | Descriptif |
|---|---|
| EventHubName | Nom du hub d’événements. Lorsque le nom du hub d’événements est également présent dans la chaîne de connexion, cette valeur remplace cette propriété au moment de l’exécution. |
| Connexion | Nom d’un paramètre d’application ou d’une collection de paramètres qui spécifie la façon de se connecter à Event Hubs. Pour en savoir plus, consultez Connexions. |
Décorateurs
Applies uniquement au modèle de programmation Python v2.
Pour les fonctions Python v2 définies à l’aide d’un décorateur, ces propriétés sont prises en charge pour event_hub_output :
| Propriété | Descriptif |
|---|---|
arg_name |
Nom de variable utilisé dans le code de la fonction qui représente l’événement. |
event_hub_name |
Nom de l’Event Hub. Lorsque le nom du hub d’événements est également présent dans la chaîne de connexion, cette valeur remplace cette propriété au moment de l’exécution. |
connection |
Nom d’un paramètre d’application ou d’une collection de paramètres qui spécifie la façon de se connecter à Event Hubs. Pour en savoir plus, consultez Connexions. |
Pour Python fonctions définies à l’aide de function.json, consultez la section Configuration.
Commentaires
Dans la bibliothèque d’exécution Java functions, utilisez l’annotation EventHubOutput sur les paramètres dont la valeur serait publiée dans Event Hubs. Les paramètres suivants sont pris en charge sur l’annotation :
Paramétrage
Applies uniquement au modèle de programmation Python v1.
Le tableau suivant explique les propriétés que vous pouvez définir pour l’objet options passé à la méthode output.eventHub().
| Propriété | Descriptif |
|---|---|
| eventHubName | Nom du hub d’événements. Lorsque le nom du hub d’événements est également présent dans la chaîne de connexion, cette valeur remplace cette propriété au moment de l’exécution. |
| connexion | Nom d’un paramètre d’application ou d’une collection de paramètres qui spécifie la façon de se connecter à Event Hubs. Pour en savoir plus, consultez Connexions. |
Le tableau suivant décrit les propriétés de configuration de la liaison que vous définissez dans le fichier function.json, qui diffère selon la version du runtime.
| Propriété function.json | Descriptif |
|---|---|
| type | Cette propriété doit être définie sur eventHub. |
| direction | Cette propriété doit être définie sur out. Ce paramètre est défini automatiquement lorsque vous créez la liaison dans le portail Azure. |
| nom | Nom de variable utilisé dans le code de la fonction qui représente l’événement. |
| eventHubName | Functions 2.x et versions ultérieures. Nom du hub d’événements. Lorsque le nom du hub d’événements est également présent dans la chaîne de connexion, cette valeur remplace cette propriété au moment de l’exécution. |
| connexion | Nom d’un paramètre d’application ou d’une collection de paramètres qui spécifie la façon de se connecter à Event Hubs. Pour en savoir plus, consultez Connexions. |
Lorsque vous développez en local, ajoutez vos paramètres d’application dans le fichier local.settings.json de la collection Values.
Utilisation
Le type de paramètre pris en charge par la liaison de sortie Event Hubs dépend de la version du runtime Functions, de la version du package d’extension et de la modalité C# utilisée.
Lorsque vous souhaitez que la fonction écrive un seul événement, la liaison de sortie Event Hubs peut se lier aux types suivants :
| Catégorie | Descriptif |
|---|---|
string |
Événement sous forme de chaîne. À utiliser quand l’événement est un texte simple. |
byte[] |
Octets de l’événement. |
| Types sérialisables JSON | Objet représentant l'événement. Cette fonction tente de sérialiser un objet CLR traditionnel (OCT) en données JSON. |
Lorsque vous souhaitez que la fonction écrive plusieurs événements, la liaison de sortie Event Hubs peut se lier aux types suivants :
| Catégorie | Descriptif |
|---|---|
T[] où T est l’un des types d’événements uniques |
Tableau contenant plusieurs événements. Chaque entrée représente un événement. |
Pour d’autres scénarios de sortie, créez et utilisez un EventHubProducerClient avec d’autres types de Azure. Messaging.EventHubs directement. Consultez Register Azure clients 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.
Il existe deux options pour produire en sortie un message Event Hubs à partir d’une fonction en utilisant l’annotation EventHubOutput :
Valeur de retour : En appliquant l’annotation à la fonction elle-même, la valeur de retour de la fonction est conservée sous la forme d’un message Event Hubs.
Imperative : pour définir explicitement la valeur du message, appliquez l’annotation à un paramètre spécifique du type
OutputBinding<T>, oùTest un type poJO ou tout type de Java natif. Avec cette configuration, le passage d’une valeur à la méthodesetValuerend la valeur persistante en tant que message Event Hubs.
Des exemples PowerShell complets sont à venir.
Il existe deux options pour produire en sortie un message Event Hubs à partir d’une fonction :
Valeur de retour : Définissez la propriété
namedans function.json sur$return. Avec cette configuration, la valeur renvoyée de la fonction est conservée sous la forme d’un message Event Hubs.Impératif : Passez une valeur à la méthode set du paramètre déclaré en tant que type Out. La valeur transmise à
setest conservée en tant que message d’Event Hubs.
Le paramètre de fonction de sortie doit être défini comme func.Out[func.EventHubEvent] ou func.Out[List[func.EventHubEvent]]. Pour plus d’informations, reportez-vous à l’exemple de sortie .
Connexions
La connection propriété est définie sur une clé dans les paramètres de l’application qui renvoie une valeur utilisée par l’exécution Functions pour se connecter à l’espace de noms Event Hubs contenant le event hub utilisé par l’extension. La valeur du paramètre de propriété de connexion dépend du type de connexion :
-
Connexion d’identité gérée : La
connectionpropriété est<CONNECTION_NAME_PREFIX>partagée par un groupe de paramètres qui définissent ensemble une connexion basée sur l’identité avec l’espace de noms. Pour plus d’informations, voir Définir les connexions identités. -
Référence Key Vault : Le
connectionparamètre de propriété renvoie une référence Azure Key Vault à l’emplacement où la chaîne de connexion est centralisée. Pour plus d’informations, voir Définir les connexions Key Vault. -
Référence App Configuration : Le
connectionparamètre de propriété renvoie une référence Azure App Configuration qui renvoie une chaîne de connexion ou une référence Key Vault. Pour plus d’informations, consultez Azure App Configuration dans l’article sur les connexions. -
Connection string : Le
connectionparamètre de propriété renvoie la chaîne de connexion réelle de l’espace de noms. La chaîne de connexion doit être pour un espace de noms Event Hubs, et non pour le hub d’événements lui-même. Parce que la chaîne de connexion contient des clés secrètes partagées, vous devriez envisager d’utiliser une connexion d’identité gérée, lorsque c’est possible. Pour plus d’informations, voir Définir les connexions.
Pour en savoir plus sur les connexions de liaisons, consultez Gérer la connexion dans Azure Functions.
Pour savoir comment obtenir la chaîne de connexion pour votre espace de noms Event Hubs, voir Obtenir une chaîne de connexion Event Hubs.
Exceptions et codes de retour
| Liaison | Informations de référence |
|---|---|
| Event Hubs | Guide des opérations |