Démarrage rapide : envoyer et recevoir des messages à partir d’une rubrique d’espace de noms Azure Event Grid (.NET)
Dans ce démarrage rapide, vous effectuez les étapes suivantes :
- Créez un espace de noms Event Grid en utilisant le Portail Azure.
- Créez une rubrique d’espace de noms Event Grid en utilisant le Portail Azure.
- Créez un abonnement aux événements en tirant parti du Portail Azure.
- Écrire une application de console .NET pour envoyer un ensemble de messages à la rubrique
- Écrivez une application de console .NET pour recevoir ces messages de la rubrique.
Remarque
Ce démarrage rapide fournit des instructions pas à pas pour implémenter un scénario simple consistant à envoyer un lot de messages à une rubrique d’espace de noms Event Grid, puis à les recevoir. Pour obtenir une vue d’ensemble de la bibliothèque de client .NET, consultez Bibliothèque de client Event Grid pour .NET. Pour obtenir plus d’échantillons, consultez Exemples .NET Event Grid sur GitHub.
Prérequis
Si vous débutez avec le service, consultez Vue d’ensemble d’Event Grid avant de suivre ce démarrage rapide.
- Abonnement Azure. Pour utiliser des services Azure, y compris Azure Event Grid, vous avez besoin d’un abonnement. Si vous n’avez pas de compte Azure existant, vous pouvez demander un essai gratuit.
- Visual Studio 2022. L’exemple d’application utilise les nouvelles fonctionnalités introduites dans C# 10. Pour utiliser la dernière syntaxe, nous vous recommandons d’installer .NET 6.0 ou une version supérieure et de définir la version du langage sur
latest
. Si vous utilisez Visual Studio, les versions antérieures à Visual Studio 2022 ne sont pas compatibles avec les outils nécessaires à la génération de projets C# 10.
Créer un espace de noms dans le Portail Azure
Un espace de noms dans Azure Event Grid est un conteneur logique pour une ou plusieurs rubriques, clients, groupes de clients, espaces de rubrique et liaisons d’autorisation. Il fournit un espace de noms unique, ce qui vous permet d’avoir plusieurs ressources dans la même région Azure. Avec un espace de noms Azure Event Grid, vous pouvez regrouper les ressources associées et les gérer en tant qu’unité unique dans votre abonnement Azure.
Suivez les sections suivantes pour créer, afficher et gérer un espace de noms Azure Event Grid.
Pour créer un espace de noms :
Connectez-vous au portail Azure.
Dans la zone de recherche, entrez Espaces de noms Event Grid et sélectionnez Espaces de noms Event Grid dans les résultats.
Sur la page Espaces de noms Event Grid, sélectionnez + Créer dans la barre d’outils.
Dans la page Informations de base, suivez ces étapes.
Sélectionnez l’abonnement Azure dans lequel vous souhaitez créer l’espace de noms.
Sélectionnez un groupe de ressources existant ou créez-en un.
Entrez un nom pour l’espace de noms.
Sélectionnez la région ou l’emplacement où vous souhaitez créer l’espace de noms.
Au bas de la page, sélectionnez Examiner et créer.
Dans la page Vérifier + créer, passez en revue les paramètres, puis sélectionnez Créer.
Sur la page Déploiement réussi, sélectionnez Accéder à la ressource pour accéder à votre espace de noms.
Créez une rubrique d’espace de noms
Si vous n’êtes pas sur la page Espace de noms Event Grid, suivez les étapes créer, visualiser et gérer des espaces de noms afin d’afficher l’espace de noms que vous voulez utiliser pour créer la rubrique.
Dans la page Espace de noms Event Grid, sélectionnez l’option Rubriques dans la section Répartiteur d’événements du menu de gauche.
Dans la page Rubriques, sélectionnez le bouton + Rubrique dans la barre de commandes.
Dans la page Créer une rubrique, tapez le nom de la rubrique à créer, puis sélectionnez Créer.
Créer un abonnement d’événement
Si vous êtes dans la page Rubriques de votre espace de noms Event Grid dans le portail Azure, sélectionnez votre rubrique dans la liste des rubriques. Si vous êtes dans la page Rubriques, suivez les instructions pour créer, voir et gérer des rubriques d’espace de noms pour identifier la rubrique à utiliser pour créer l’abonnement à l’événement.
Dans la page Rubrique de l’espace de noms Event Grid, sélectionnez l’option Abonnements dans la section Entités du menu de gauche.
Dans la page Abonnements, sélectionnez le bouton « + Abonnement » dans la barre de commandes.
Dans l’onglet Informations de base, procédez comme suit :
Entrez un nom pour l’abonnement que vous voulez créer
Vérifiez que le schéma de livraison est défini sur Cloud Events v1.0.
Vérifiez que le mode de livraison est défini sur File d’attente (mode extraction).
Sélectionnez Suivant : Filtres au bas de la page.
Sous l’onglet Filtres, ajoutez les noms des types d’événements que vous souhaitez filtrer dans l’abonnement et ajoutez des filtres d’attributs de contexte que vous souhaitez utiliser dans l’abonnement. Puis, sélectionnez Suivant : Fonctionnalités supplémentaires en bas de la page.
Sous l’onglet Fonctionnalités supplémentaires, vous pouvez spécifier les paramètres de conservation des événements, de nombre maximal de remises, de durée de verrouillage et de mise en file d’attente de lettres mortes.
Sélectionnez Créer pour créer l’abonnement aux événements.
Authentifier l’application sur Azure
Ce démarrage rapide vous les façons de vous connecter à Azure Event Grid : chaîne de connexion. Cette section vous montre comment utiliser une chaîne de connexion pour vous connecter à un espace de noms Event Grid. Si vous débutez avec Azure, l’option de chaîne de connexion est plus facile à suivre. Créer un espace de noms Event Grid génère automatiquement une clé primaire et secondaire initiales qui vous offrent un contrôle complet sur tous les aspects de l’espace de noms ou des rubriques. Un client peut utiliser la chaîne de connexion pour se connecter à l’espace de noms Event Grid. Pour copier les clés d’accès de votre rubrique d’espace de noms, suivez ces étapes :
Dans la page Espace de noms Event Grid, sélectionnez Rubriques.
Sélectionnez la rubrique à laquelle vous devez accéder.
Dans la page Clés d’accès, sélectionnez le bouton Copier en regard de Clé 1 ou Clé 2 pour copier les clés d’accès dans le Presse-papiers en vue d’une utilisation ultérieure. Copiez cette valeur dans le Bloc-notes ou un autre emplacement temporaire.
Lancer Visual Studio
Lancez Visual Studio. Si la fenêtre Démarrage s’affiche, sélectionnez le lien Continuer sans code dans le volet de droite.
Envoyez des messages à la rubrique
Cette section vous montre comment créer une application console .NET pour envoyer des messages à une rubrique Event Grid.
Création d’une application console
Dans Visual Studio, sélectionnez le menu Fichier - >Nouveau - >Projet.
Dans la boîte de dialogue Créer un projet, effectuez les étapes suivantes : Si vous ne voyez pas cette boîte de dialogue, sélectionnez Fichier dans le menu, sélectionnez Nouveau, puis Projet.
Sélectionnez C# en guise de langage de programmation.
Sélectionnez Console comme type de l’application.
Sélectionnez Application console dans la liste des résultats.
Ensuite, sélectionnez Suivant.
Entrez EventSender comme nom de projet, EventGridQuickStart comme nom de solution, puis sélectionnez Suivant.
Dans la page Informations supplémentaires, sélectionnez Créer pour créer la solution et le projet.
Ajouter les paquets NuGet au projet
Cliquez sur Outils>Gestionnaire de package NuGet>Console du Gestionnaire de package à partir du menu.
Exécutez la commande suivante pour installer le package NuGet Azure.Messaging.EventGrid :
Install-Package Azure.Messaging.EventGrid.Namespaces
Ajouter du code pour envoyer un événement à une rubrique d’espace de noms
Remplacez le contenu de
Program.cs
par le code suivant. Les étapes importantes sont décrites, avec des informations supplémentaires dans les commentaires de code.Important
Mettez à jour les valeurs d’espace réservé (
<NAMESPACE-ENDPOINT>
,<TOPIC-NAME>
,<TOPIC-ACCESS-KEY>
,<TOPIC-SUBSCRIPTION-NAME>
) dans l’extrait de code avec le point de terminaison, le nom de la rubrique et la clé de rubrique de votre espace de noms.using Azure.Messaging; using Azure; using Azure.Messaging.EventGrid.Namespaces; // TODO: Replace the following placeholders with appropriate values // Endpoint of the namespace that you can find on the Overview page for your Event Grid namespace. Prefix it with https://. // Should be in the form: https://namespace01.eastus-1.eventgrid.azure.net. var namespaceEndpoint = "<NAMESPACE-ENDPOINT>"; // Name of the topic in the namespace var topicName = "<TOPIC-NAME>"; // Access key for the topic var topicKey = "<TOPIC-ACCESS-KEY>"; // Construct the client using an Endpoint for a namespace as well as the access key var client = new EventGridSenderClient(new Uri(namespaceEndpoint), topicName, new AzureKeyCredential(topicKey)); // Publish a single CloudEvent using a custom TestModel for the event data. var @ev = new CloudEvent("employee_source", "type", new TestModel { Name = "Bob", Age = 18 }); await client.SendAsync(ev); // Publish a batch of CloudEvents. await client.SendAsync( new[] { new CloudEvent("employee_source", "type", new TestModel { Name = "Tom", Age = 55 }), new CloudEvent("employee_source", "type", new TestModel { Name = "Alice", Age = 25 })}); Console.WriteLine("Three events have been published to the topic. Press any key to end the application."); Console.ReadKey(); public class TestModel { public string Name { get; set; } public int Age { get; set; } }
Générez le projet et vérifiez qu’il ne présente pas d’erreurs.
Exécutez le programme et attendez le message de confirmation.
Three events have been published to the topic. Press any key to end the application.
Important
Dans la plupart des cas, la propagation de l’attribution de rôle dans Azure peut prendre une ou deux minutes. Dans de rares cas, cela peut prendre jusqu’à huit minutes. Si vous recevez des erreurs d’authentification lorsque vous exécutez votre code pour la première fois, patientez quelques instants et réessayez.
Dans le portail Azure, procédez comme suit :
Extraire des messages à partir de la rubrique
Dans cette section, vous créez une application console .NET qui reçoit des messages de la rubrique.
Créer un projet pour recevoir les événements CloudEvents publiés
- Dans la fenêtre Explorateur de solutions, cliquez avec le bouton droit sur la solution EventGridQuickStart, pointez sur Ajouter, puis sélectionnez Nouveau projet.
- Sélectionnez Application console, puis Suivant.
- Entrez EventReceiver pour Nom du projet, puis sélectionnez Créer.
- Dans la fenêtre Explorateur de solutions, cliquez avec le bouton droit sur EventReceiver, puis sélectionnez Définir comme projet de démarrage.
Ajouter les paquets NuGet au projet
Cliquez sur Outils>Gestionnaire de package NuGet>Console du Gestionnaire de package à partir du menu.
Exécutez la commande suivante pour installer le package NuGet Azure.Messaging.EventGrid. Sélectionnez EventReceiver pour le Projet par défaut s’il n’est pas déjà défini.
Install-Package Azure.Messaging.EventGrid.Namespaces
Ajouter le code pour recevoir des événements de la rubrique
Dans cette section, vous allez ajouter du code pour récupérer les messages de la file d’attente.
Dans la classe
Program
, ajoutez le code suivant :Important
Mettez à jour les valeurs d’espace réservé (
<NAMESPACE-ENDPOINT>
,<TOPIC-NAME>
,<TOPIC-ACCESS-KEY>
,<TOPIC-SUBSCRIPTION-NAME>
) dans l’extrait de code avec le point de terminaison, le nom de rubrique, la clé de rubrique et le nom d’abonnement de la rubrique de votre espace de noms.using Azure; using Azure.Messaging; using Azure.Messaging.EventGrid.Namespaces; // TODO: Replace the following placeholders with appropriate values // Endpoint of the namespace that you can find on the Overview page for your Event Grid namespace // Example: https://namespace01.eastus-1.eventgrid.azure.net. var namespaceEndpoint = "<NAMESPACE-ENDPOINT>"; // Should be in the form: https://namespace01.eastus-1.eventgrid.azure.net. // Name of the topic in the namespace var topicName = "<TOPIC-NAME>"; // Access key for the topic var topicKey = "<TOPIC-ACCESS-KEY>"; // Name of the subscription to the topic var subscriptionName = "<TOPIC-SUBSCRIPTION-NAME>"; // Maximum number of events you want to receive const short MaxEventCount = 3; // Construct the client using an Endpoint for a namespace as well as the access key var client = new EventGridReceiverClient(new Uri(namespaceEndpoint), topicName, subscriptionName, new AzureKeyCredential(topicKey)); // Receive the published CloudEvents. ReceiveResult result = await client.ReceiveAsync(MaxEventCount); Console.WriteLine("Received Response"); Console.WriteLine("-----------------");
Ajoutez les méthodes suivantes à la fin de la classe
Program
.// handle received messages. Define these variables on the top. var toRelease = new List<string>(); var toAcknowledge = new List<string>(); var toReject = new List<string>(); // Iterate through the results and collect the lock tokens for events we want to release/acknowledge/result foreach (ReceiveDetails detail in result.Details) { CloudEvent @event = detail.Event; BrokerProperties brokerProperties = detail.BrokerProperties; Console.WriteLine(@event.Data.ToString()); // The lock token is used to acknowledge, reject or release the event Console.WriteLine(brokerProperties.LockToken); Console.WriteLine(); // If the event is from the "employee_source" and the name is "Bob", we are not able to acknowledge it yet, so we release it if (@event.Source == "employee_source" && @event.Data.ToObjectFromJson<TestModel>().Name == "Bob") { toRelease.Add(brokerProperties.LockToken); } // acknowledge other employee_source events else if (@event.Source == "employee_source") { toAcknowledge.Add(brokerProperties.LockToken); } // reject all other events else { toReject.Add(brokerProperties.LockToken); } } // Release/acknowledge/reject the events if (toRelease.Count > 0) { ReleaseResult releaseResult = await client.ReleaseAsync(toRelease); // Inspect the Release result Console.WriteLine($"Failed count for Release: {releaseResult.FailedLockTokens.Count}"); foreach (FailedLockToken failedLockToken in releaseResult.FailedLockTokens) { Console.WriteLine($"Lock Token: {failedLockToken.LockToken}"); Console.WriteLine($"Error Code: {failedLockToken.Error}"); Console.WriteLine($"Error Description: {failedLockToken.ToString}"); } Console.WriteLine($"Success count for Release: {releaseResult.SucceededLockTokens.Count}"); foreach (string lockToken in releaseResult.SucceededLockTokens) { Console.WriteLine($"Lock Token: {lockToken}"); } Console.WriteLine(); } if (toAcknowledge.Count > 0) { AcknowledgeResult acknowledgeResult = await client.AcknowledgeAsync(toAcknowledge); // Inspect the Acknowledge result Console.WriteLine($"Failed count for Acknowledge: {acknowledgeResult.FailedLockTokens.Count}"); foreach (FailedLockToken failedLockToken in acknowledgeResult.FailedLockTokens) { Console.WriteLine($"Lock Token: {failedLockToken.LockToken}"); Console.WriteLine($"Error Code: {failedLockToken.Error}"); Console.WriteLine($"Error Description: {failedLockToken.ToString}"); } Console.WriteLine($"Success count for Acknowledge: {acknowledgeResult.SucceededLockTokens.Count}"); foreach (string lockToken in acknowledgeResult.SucceededLockTokens) { Console.WriteLine($"Lock Token: {lockToken}"); } Console.WriteLine(); } if (toReject.Count > 0) { RejectResult rejectResult = await client.RejectAsync(toReject); // Inspect the Reject result Console.WriteLine($"Failed count for Reject: {rejectResult.FailedLockTokens.Count}"); foreach (FailedLockToken failedLockToken in rejectResult.FailedLockTokens) { Console.WriteLine($"Lock Token: {failedLockToken.LockToken}"); Console.WriteLine($"Error Code: {failedLockToken.Error}"); Console.WriteLine($"Error Description: {failedLockToken.ToString}"); } Console.WriteLine($"Success count for Reject: {rejectResult.SucceededLockTokens.Count}"); foreach (string lockToken in rejectResult.SucceededLockTokens) { Console.WriteLine($"Lock Token: {lockToken}"); } Console.WriteLine(); } public class TestModel { public string Name { get; set; } public int Age { get; set; } }
Dans la fenêtre Explorateur de solutions, faites un clic droit sur le projet EventReceiver, et sélectionnez Définir comme projet de démarrage.
Générez le projet et vérifiez qu’il ne présente pas d’erreurs.
Exécutez l’application EventReceiver et confirmez que vous voyez les trois évènements dans la fenêtre de sortie.
Nettoyer les ressources
Accédez à votre espace de noms Event Grid dans le Portail Azure, puis sélectionnez Supprimer sur le Portail Azure pour supprimer l’espace de noms Event Grid et la rubrique qu’il contient.
Rubriques connexes
Consultez Informations de référence sur l’API .NET.