Choisir Azure Event Grid
De nombreuses applications utilisent un modèle de publication et d’abonnement pour avertir les composants distribués que quelque chose s’est produit ou qu’un objet a changé. Supposez que vous avez une application de partage de musique avec une API web qui s’exécute dans Azure. Quand un utilisateur charge un nouveau morceau, vous devez informer toutes les applications mobiles installées sur les appareils des utilisateurs dans le monde entier qui sont intéressés par ce genre.
Dans cette architecture, l’éditeur du fichier audio n’a pas besoin d’être au fait des abonnés intéressés par la musique partagée. De plus, nous souhaitons avoir une relation un à plusieurs dans laquelle plusieurs abonnés peuvent décider s’ils sont intéressés par cette nouvelle musique. Azure Event Grid est une solution parfaite pour ce type d’architecture.
Qu’est-ce qu’Azure Event Grid ?
Azure Event Grid est un service de routage d’événements entièrement managé, qui s’exécute sur Azure Service Fabric. Event Grid distribue des événements de différentes sources, telles que des comptes de stockage Blob Azure ou Azure Media Services, à différents gestionnaires comme Azure Functions ou Webhooks. Event Grid a été créé afin de simplifier la génération d’applications serverless et basées sur des événements sur Azure.
Event Grid prend en charge la plupart des services Azure en tant qu’éditeur ou abonné, et peut être utilisé avec des services tiers. Il constitue un système de messagerie économique et dynamiquement scalable qui permet aux éditeurs de notifier les abonnés à propos d’un changement d’état. L’illustration suivante montre la réception par Azure Event Grid de messages provenant de plusieurs sources et leur distribution aux gestionnaires d’événements en fonction de l’abonnement.
Plusieurs concepts dans Azure Event Grid permettent de connecter une source à un abonné :
- Événements : ce qui s’est produit.
- Sources d’événements : emplacement où l’événement a eu lieu.
- Rubriques : point de terminaison où les éditeurs envoient des événements.
- Abonnements aux événements : mécanisme intégré ou point de terminaison afin d’acheminer les événements, parfois à plusieurs gestionnaires. Les gestionnaires utilisent également les abonnements pour filtrer intelligemment les événements entrants.
- Gestionnaires d’événements : application ou service réagissant à l’événement.
L’illustration suivante montre Azure Event Grid placé entre plusieurs sources d’événements et plusieurs gestionnaires d’événements. Les sources d’événements envoient des événements à Event Grid et Event Grid transmet les événements pertinents aux abonnés. Event Grid utilise des rubriques pour déterminer quels événements envoyer à quels gestionnaires. Les sources d’événements associent une ou plusieurs rubriques à chaque événement et les gestionnaires d’événements s’abonnent aux rubriques qui les intéressent.
Qu’est-ce qu’un événement ?
Les événements sont les messages de données qui transitent par Event Grid et décrivent ce qui a eu lieu. Chaque événement est autonome, a une taille maximale de 64 Ko et contient plusieurs informations basées sur un schéma défini par Event Grid :
[
{
"topic": string,
"subject": string,
"id": string,
"eventType": string,
"eventTime": string,
"data":{
object-unique-to-each-publisher
},
"dataVersion": string,
"metadataVersion": string
}
]
Champ | Description |
---|---|
topic | Chemin complet à la source de l’événement. Event Grid fournit cette valeur. |
subject | Chemin de l’objet de l’événement, défini par l’éditeur. |
id | Identificateur unique de l’événement. |
eventType | L’un des types d’événements inscrits pour cette source d’événement. Vous pouvez créer des filtres sur cette valeur, par exemple CustomerCreated , BlobDeleted , HttpRequestReceived , etc. |
eventTime | Heure à laquelle l’événement a été généré (basée sur l’heure UTC du fournisseur). |
data | Informations spécifiques qui sont pertinentes pour le type d’événement. Par exemple, un événement concernant un fichier en cours de création dans Stockage Azure a des informations détaillées sur le fichier, notamment la valeur lastTimeModified . Ou encore, un événement Event Hubs contient l’URL du fichier Capture. Ce champ est facultatif. |
dataVersion | Version de schéma de l’objet de données. L’éditeur définit la version du schéma. |
metadataVersion | Version du schéma des métadonnées d’événement. Event Grid définit le schéma des propriétés de niveau supérieur. Event Grid fournit cette valeur. |
Conseil
Event Grid envoie un événement pour indiquer que quelque chose s’est produit ou a changé. Toutefois, l’objet réel qui a changé ne fait pas partie des données d’événement. Au lieu de cela, une URL ou un identificateur est souvent transmis pour référencer l’objet modifié.
Qu’est-ce qu’une source d’événement ?
Les sources d’événements sont responsables de l’envoi des événements à Event Grid. Chaque source d’événement est liée à un ou plusieurs types d’événements. Par exemple, le stockage Azure est la source d’événement des événements créés pour l’objet blob. IoT Hub est la source d’événements pour les événements créés par l’appareil. Votre application est la source d’événement pour les événements personnalisés que vous définissez. Nous examinerons plus en détail les sources d’événements dans un instant.
Le concept d’éditeur d’événements d’Azure Event Grid est souvent confondu avec la source d’événement. Un éditeur d’événements correspond à l’utilisateur ou à l’organisation qui décide d’envoyer des événements à Event Grid. Par exemple, Microsoft publie des événements pour plusieurs services Azure. Vous pouvez publier des événements à partir de votre propre application. Les organisations qui hébergent des services en dehors d’Azure peuvent publier des événements par le biais d’Event Grid. La source d’événement est le service spécifique qui génère l’événement pour cet éditeur. Bien que les deux termes soient légèrement différents, dans le cadre de cette unité, nous utiliserons « émetteur » et « source d’événements » de façon interchangeable pour représenter l’entité qui envoie le message à Event Grid.
Qu’est-ce qu’une rubrique d’événement ?
Les rubriques d’événements catégorisent les événements dans des groupes. Elles sont représentées par un point de terminaison public et constituent l’emplacement vers lequel la source d’événement envoie les événements. Quand vous concevez votre application, vous pouvez choisir le nombre de rubriques à créer. Les solutions les plus grandes créeront une rubrique personnalisée pour chaque catégorie d’événements associés, tandis que les solutions plus petites peuvent envoyer tous les événements vers une seule rubrique. Par exemple, prenez une application qui envoie des événements liés à la modification de comptes d’utilisateur et au traitement de commandes. Il est peu probable qu’un gestionnaire d’événements accepte les deux catégories d’événements. Créez deux rubriques personnalisées et laissez les gestionnaires d’événements s’abonner à celle qui les intéresse. Les abonnés à des événements peuvent filtrer les types d’événements qu’ils souhaitent dans une rubrique spécifique.
Les rubriques sont divisées en rubriques système et en rubriques personnalisées.
Rubriques système
Les rubriques système sont des rubriques intégrées fournies par les services Azure. Vous ne voyez pas les rubriques système dans votre abonnement Azure car l’éditeur en est propriétaire, mais vous pouvez vous y abonner. Pour vous abonner, fournissez des informations sur la ressource à partir de laquelle vous souhaitez recevoir des événements. Tant que vous avez accès à la ressource, vous pouvez vous abonner à ses événements.
Rubriques personnalisées
Les rubriques personnalisées sont des rubriques tierces et applicatives. Quand vous créez une rubrique personnalisée ou que l’accès à une rubrique personnalisée vous est accordé, celle-ci est visible dans votre abonnement.
Qu’est-ce qu’un abonnement aux événements ?
Les abonnements aux événements définissent les événements d’une rubrique qu’un gestionnaire d’événements souhaite recevoir. Un abonnement peut également filtrer les événements par type ou par sujet, ce qui vous permet de vous assurer qu’un gestionnaire d’événements reçoit uniquement des événements pertinents.
Qu’est-ce qu’un gestionnaire d’événements ?
Un gestionnaire d’événements (parfois appelé « abonné » à un événement) est un composant (application ou ressource) qui peut recevoir des événements à partir d’Event Grid. Par exemple, Azure Functions peut exécuter du code en réponse au nouveau morceau ajouté au compte de stockage d’objets blob. Les abonnés peuvent décider quels événements ils souhaitent traiter et Event Grid informe efficacement chaque abonné intéressé quand un nouvel événement est disponible ; aucune interrogation n’est requise.
Types de sources d’événements
Les types de ressources Azure suivants peuvent générer des événements :
Services Azure qui prennent en charge les rubriques système
Voici quelques services Azure qui prennent en charge les rubriques système. Pour obtenir la liste complète des services Azure prenant en charge les rubriques système, consultez Rubriques système dans Azure Event Grid.
- Abonnements et groupes de ressources Azure : les abonnements et groupes de ressources génèrent des événements liés aux opérations de gestion dans Azure. Par exemple, quand un utilisateur crée une machine virtuelle, cette source génère un événement.
- Registre de conteneurs : le service Azure Container Registry génère des événements quand des images dans le registre sont ajoutées, supprimées ou modifiées.
- Event Hubs : vous pouvez utiliser Event Hubs pour traiter et stocker des événements à partir de diverses sources de données, généralement liées à la journalisation ou à la télémétrie. Event Hubs peut générer et envoyer des événements à Event Grid quand des fichiers sont capturés.
- Service Bus : Service Bus peut générer et envoyer des événements à Event Grid quand il existe des messages actifs sans écouteur actif.
- Comptes de stockage : les comptes de stockage peuvent générer des événements quand des utilisateurs ajoutent des blobs, des fichiers, des entrées de table ou des messages en file d’attente. Vous pouvez utiliser des comptes de stockage d’objets blob et des comptes à usage général V2 en tant que sources d’événements.
- Media Services : Media Services héberge des médias audio et vidéo et fournit des fonctionnalités de gestion avancée des fichiers multimédias. Media Services peut générer des événements au démarrage ou à la fin d’un travail d’encodage sur un fichier vidéo.
- Azure IoT Hub : IoT Hub communique avec les appareils IoT et collecte leurs données de télémétrie. Il peut générer des événements chaque fois que de telles communications ont lieu.
Pour plus d’informations, consultez Rubriques système dans Azure Event Grid.
Rubriques personnalisées
Vous pouvez générer des événements personnalisés à l’aide de l’API REST ou du Kit de développement logiciel (SDK) sur Java, GO, .NET, Node, Python et Ruby. Par exemple, vous pouvez créer un événement personnalisé dans la fonctionnalité Web Apps d’Azure App Service. Cette opération peut se produire dans le rôle de travail quand il récupère un message d’une file d’attente de stockage.
Cette intégration profonde à diverses sources d’événements dans Azure garantit qu’Event Grid peut distribuer des événements liés à pratiquement n’importe quelle ressource Azure.
Gestionnaires d’événements
Les types d’objet pouvant recevoir et gérer des événements d’Event Grid dans Azure sont les suivants :
- Azure Functions : code personnalisé qui s’exécute dans Azure, sans qu’il soit nécessaire de configurer explicitement un serveur virtuel ou un conteneur hôte. Utilisez une fonction Azure en tant que gestionnaire d’événements quand vous souhaitez coder une réponse personnalisée à l’événement.
- Azure Logic Apps : utilisez Logic Apps pour implémenter des processus métier visant à traiter les événements Event Grid. Dans ce scénario, vous ne créez pas explicitement de webhook. Le webhook est automatiquement créé pour vous lorsque vous configurez l’application logique pour gérer des événements à partir d’Event Grid.
- Webhooks : un webhook est une API web qui implémente une architecture ed transmission de type push. Vous pouvez également traiter les événements à l’aide de runbooks Azure Automation. Les webhooks prennent en charge le traitement des événements à l’aide de runbooks automatisés. Vous créez un webhook pour le runbook, puis utilisez le gestionnaire de webhook.
- Event Hubs : Utilisez Event Hubs lorsque votre solution reçoit des événements d’Event Grid plus vite qu’elle ne peut les traiter. Une fois que les événements se trouvent dans un concentrateur d’événements, votre application peut traiter ces événements selon sa propre planification.
- Service Bus : Vous pouvez utiliser une file d’attente ou une rubrique Service Bus comme gestionnaire des événements venant d’Event Grid.
- Files d’attente de stockage : Utilisez le Stockage File d’attente pour recevoir les événements qui doivent être extraits. Vous pouvez éventuellement utiliser le Stockage File d’attente pour gérer un processus long qui met trop de temps à répondre. En envoyant des événements au Stockage File d’attente, l’application peut les extraire et les traiter à son propre rythme.
- Microsoft Power Automate : Power Automate héberge également des workflows, mais il est plus facile à utiliser par les équipes non techniques.
Pour plus d’informations, consultez Gestionnaires d’événements.
Devez-vous utiliser Event Grid ?
Utilisez Event Grid quand vous avez besoin des fonctionnalités suivantes :
- Simplicité : il est très facile de connecter des sources à des abonnés dans Event Grid.
- Filtrage avancé : Les abonnements contrôlent étroitement les événements qu’ils reçoivent d’une rubrique.
- Distribution ramifiée : Vous pouvez vous abonner à un nombre illimité de points de terminaison pour les mêmes événements et rubriques.
- Fiabilité : Event Grid effectue une nouvelle tentative de distribution d’événements pour chaque abonnement pendant une période pouvant aller jusqu’à 24 heures.
- Paiement à l’événement : Payez uniquement pour le nombre d’événements que vous transmettez.
Event Grid est un système de distribution d’événements simple mais polyvalent. Utilisez-le pour remettre des événements discrets aux abonnés qui les recevront de manière fiable et rapide. Nous devons examiner un autre modèle de messagerie : que se passe-t-il si nous voulons livrer un grand flux d’événements ? Dans ce scénario, Event Grid n’est pas une solution idéale, car il est conçu pour la distribution d’un événement à la fois. À la place, nous devons nous tourner vers un autre service Azure : Event Hubs.