Partage via


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 :

  1. Créez un espace de noms Event Grid en utilisant le Portail Azure.
  2. Créez une rubrique d’espace de noms Event Grid en utilisant le Portail Azure.
  3. Créez un abonnement aux événements en tirant parti du Portail Azure.
  4. Écrire une application de console .NET pour envoyer un ensemble de messages à la rubrique
  5. É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 :

  1. Connectez-vous au portail Azure.

  2. Dans la zone de recherche, entrez Espaces de noms Event Grid et sélectionnez Espaces de noms Event Grid dans les résultats.

    Capture d’écran montrant les espaces de noms Event Grid dans les résultats de la recherche.

  3. Sur la page Espaces de noms Event Grid, sélectionnez + Créer dans la barre d’outils.

    Capture d’écran montrant la page Espaces de noms Event Grid avec le bouton Créer dans la barre d’outils sélectionnée.

  4. Dans la page Informations de base, suivez ces étapes.

    1. Sélectionnez l’abonnement Azure dans lequel vous souhaitez créer l’espace de noms.

    2. Sélectionnez un groupe de ressources existant ou créez-en un.

    3. Entrez un nom pour l’espace de noms.

    4. Sélectionnez la région ou l’emplacement où vous souhaitez créer l’espace de noms.

    5. Au bas de la page, sélectionnez Examiner et créer.

      Capture d’écran montrant l’onglet Informations de base de la page Créer un espace de noms.

  5. Dans la page Vérifier + créer, passez en revue les paramètres, puis sélectionnez Créer.

  6. 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

  1. 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.

  2. Dans la page Espace de noms Event Grid, sélectionnez l’option Rubriques dans la section Événements du menu de gauche.

  3. Dans la page Rubriques, sélectionnez le bouton + Rubrique dans la barre de commandes.

    Capture d'écran montrant la création de la rubrique de l'espace de noms Event Grid.

  4. Dans la page Créer une rubrique, tapez le nom de la rubrique à créer, puis sélectionnez Créer.

    Capture d'écran montrant la création de base de la rubrique de l'espace de noms Event Grid.

Créer un abonnement d’événement

  1. 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.

    Capture d’écran montrant la page rubriques Event Grid avec une rubrique sélectionnée.

  2. 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.

  3. Dans la page Abonnements, sélectionnez le bouton « + Abonnement » dans la barre de commandes.

    Capture d’écran montrant la création d’un abonnement à un événement Event Grid.

  4. Dans l’onglet Informations de base, procédez comme suit :

    1. Entrez un nom pour l’abonnement que vous voulez créer

    2. Vérifiez que le schéma de livraison est défini sur Cloud Events v1.0.

    3. Vérifiez que le mode de livraison est défini sur File d’attente (mode extraction).

    4. Sélectionnez Suivant : Filtres au bas de la page.

      Capture d’écran montrant les fondamentaux de la création d’un abonnement à un événement Event Grid.

  5. 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.

    Capture d’écran montrant les filtres de création d’un abonnement à un événement Event Grid.

  6. 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.

    Capture d’écran montrant les fonctionnalités supplémentaires de création d’un abonnement à un événement Event Grid.

  7. 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 :

  1. Dans la page Espace de noms Event Grid, sélectionnez Rubriques.

  2. Sélectionnez la rubrique à laquelle vous devez accéder.

  3. 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.

    Capture d’écran montrant la clé d’accès d’une rubrique Event Grid.

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

  1. Dans Visual Studio, sélectionnez le menu Fichier - >Nouveau - >Projet.

  2. 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.

    1. Sélectionnez C# en guise de langage de programmation.

    2. Sélectionnez Console comme type de l’application.

    3. Sélectionnez Application console dans la liste des résultats.

    4. Ensuite, sélectionnez Suivant.

      Capture d’écran montrant la boîte de dialogue Créer un projet avec C# et la console sélectionnés.

  3. Entrez EventSender comme nom de projet, EventGridQuickStart comme nom de solution, puis sélectionnez Suivant.

    Capture d’écran montrant les noms de la solution et du projet dans la boîte de dialogue Configurer votre nouveau projet.

  4. Dans la page Informations supplémentaires, sélectionnez Créer pour créer la solution et le projet.

Ajouter les paquets NuGet au projet

  1. Cliquez sur Outils>Gestionnaire de package NuGet>Console du Gestionnaire de package à partir du menu.

  2. 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

  1. 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; }
    }
    
    
  2. Générez le projet et vérifiez qu’il ne présente pas d’erreurs.

  3. 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.

  4. Dans le portail Azure, procédez comme suit :

    1. Accédez à votre espace de noms Event Grid.

    2. Dans la page Vue d’ensemble, vous voyez le nombre d’événements publiés sur l’espace de noms dans le graphique.

      Capture d’écran montrant la page d’espace de noms Event Grid dans le Portail Azure.

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

  1. Dans la fenêtre Explorateur de solutions, cliquez avec le bouton droit sur la solution EventGridQuickStart, pointez sur Ajouter, puis sélectionnez Nouveau projet.
  2. Sélectionnez Application console, puis Suivant.
  3. Entrez EventReceiver pour Nom du projet, puis sélectionnez Créer.
  4. 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

  1. Cliquez sur Outils>Gestionnaire de package NuGet>Console du Gestionnaire de package à partir du menu.

  2. 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
    

    Capture d’écran montrant le projet EventReceiver sélectionné dans la console du gestionnaire de package.

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.

  1. 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("-----------------");
    
    
  2. 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; }
    }    
    
    
  3. 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.

  4. Générez le projet et vérifiez qu’il ne présente pas d’erreurs.

  5. Exécutez l’application EventReceiver et confirmez que vous voyez les trois évènements dans la fenêtre de sortie.

    Capture d’écran montrant la sortie de l’application Receiver.

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.

Consultez Informations de référence sur l’API .NET.