Partager via


Prise en main des rubriques et abonnements Azure Service Bus (.NET)

Ce guide de démarrage rapide montre comment envoyer des messages à une rubrique Service Bus et recevoir des messages d’un abonnement à cette rubrique en utilisant la bibliothèque .NET Azure.Messaging.ServiceBus.

Dans ce guide de démarrage rapide, vous allez effectuer les étapes suivantes :

  1. Créer un espace de noms Service Bus à l’aide du Portail Azure.
  2. Créer une rubrique Service Bus à l’aide du Portail Azure.
  3. Créer un abonnement Service Bus vers cette rubrique à l’aide du Portail Azure.
  4. Écrivez 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 l’abonnement.

Notes

Ce guide de démarrage rapide fournit des instructions pas à pas pour un scénario simple qui consiste à envoyer un lot de messages à une rubrique Service Bus et à recevoir ces messages à partir d’un abonnement de la rubrique. Pour plus d'exemples sur d'autres scénarios et des scénarios avancés, voir Exemples .NET Service Bus sur GitHub.

  • Ce guide de démarrage rapide vous montre deux façons de vous connecter à Azure Service Bus : avec une chaîne de connexion et sans mot de passe. La première option décrit comment utiliser une chaîne de connexion pour vous connecter à un espace de noms Service Bus. La seconde option vous explique comment utiliser votre principal de sécurité dans Microsoft Entra ID et le contrôle d’accès en fonction du rôle (RBAC) pour vous connecter à un espace de noms Service Bus. Vous n’avez pas à vous soucier d’avoir une chaîne de connexion codée en dur dans votre code, dans un fichier config ou dans un stockage sécurisé comme Azure Key Vault. Si vous débutez dans Azure, vous trouverez peut-être l’option de chaîne de connexion plus facile à suivre. Nous vous recommandons d’utiliser l’option sans mot de passe dans les applications réelles et les environnements de production. Pour plus d’informations, consultez Authentification et autorisation.

Prérequis

Si vous débutez avec le service, consultez Vue d’ensemble de Service Bus avant de suivre ce démarrage rapide.

  • Abonnement Azure. Pour utiliser des services Azure, dont Azure Service Bus, 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. Vous pouvez toujours utiliser la bibliothèque cliente Service Bus avec les versions antérieures du langage C#, mais la syntaxe peut varier. 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

Pour commencer à utiliser des entités de messagerie Service Bus dans Azure, vous devez d’abord créer un espace de noms avec un nom unique dans Azure. Un espace de noms fournit un conteneur d’étendue pour les ressources du Service Bus (files d’attente, thèmes, etc.) au sein de votre application.

Pour créer un espace de noms :

  1. Connectez-vous au portail Azure.

  2. Accédez à la page Tous les services.

  3. Dans la barre de navigation à gauche, sélectionnez Intégration dans la liste des catégories, passez votre curseur sur Service Bus, puis cliquez le bouton + dans la vignette Service Bus.

    Image illustrant la sélection de Créer une ressource, puis celles de Intégration et de Service Bus, dans le menu.

  4. Dans l’étiquette De base de la page Créer un espace de noms, suivez ces étapes :

    1. Pour l’option Abonnement, choisissez un abonnement Azure dans lequel créer l’espace de noms.

    2. Pour le Groupe de ressources, choisissez un groupe de ressources existant ou créez-en un.

    3. Entrez un nom pour l’espace de noms. Le nom de l’espace de noms doit respecter les conventions de nommage suivantes :

      • Le nom doit être unique dans tout Azure. Le système vérifie immédiatement si le nom est disponible.
      • Le nom doit inclure entre 6 et 50 caractères.
      • Le nom ne peut contenir que des lettres, des chiffres et des traits d’union -.
      • Le nom doit commencer par une lettre, et se terminer par une lettre ou un chiffre.
      • Le nom ne se termine pas par -sb ou -mgmt.
    4. Pour l’option Emplacement, choisissez la région dans laquelle héberger votre espace de noms.

    5. Pour le Niveau tarifaire, sélectionnez le SKU (De base, Standard ou Premium) destiné à l’espace de noms. Pour ce guide de démarrage rapide, sélectionnez Standard.

    6. Si vous sélectionnez le niveau Premium, indiquez si vous pouvez activer la géoréplication pour l’espace de noms. La fonctionnalité de géoréplication garantit que les métadonnées et les données d’un espace de noms sont répliquées en continu d’une région primaire vers une ou plusieurs régions secondaires.

      Important

      Si vous voulez utiliser des rubriques et des abonnements, choisissez Standard ou Premium. Les rubriques/abonnements ne sont pas pris en charge dans le niveau tarifaire De base.

      Si vous avez sélectionné le SKU Premium, précisez le nombre d’unité de messagerie. Le niveau Premium isole les ressources au niveau du processeur et de la mémoire, ce qui permet d’exécuter chaque charge de travail de manière isolée. Ce conteneur de ressources est appelé unité de messagerie. Un espace de noms Premium a au moins une unité de messagerie. Vous pouvez sélectionner 1, 2, 4, 8 ou 16 unités de messagerie pour chaque espace de noms Service Bus Premium. Pour plus d’informations, consultez Messagerie Service Bus Premium.

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

      Image représentant la page Créer un espace de noms

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

  5. Une fois le déploiement de la ressource réussi, sélectionnez Accéder à la ressource dans la page de déploiement.

    Image représentant la page du déploiement réussi avec le lien Atteindre la ressource.

  6. Vous voyez la page d’accueil de votre espace de noms Service Bus.

    Image représentant la page d’accueil de l’espace de noms Service Bus créé.

Créer une rubrique à l’aide du Portail Azure

  1. Dans la page Espace de noms Service Bus, développez Entités dans le menu de navigation à gauche, puis sélectionnez Rubriques dans le menu de gauche.

  2. Sélectionnez + Rubrique dans la barre d’outils.

  3. Entrez un nom pour la rubrique. Conservez les valeurs par défaut des autres options.

  4. Sélectionnez Create (Créer).

    Image montrant la page Créer une rubrique.

Créer un abonnement à la rubrique

  1. Sélectionnez la rubrique que vous avez créée dans la section précédente.

    Image montrant la sélection de la rubrique dans la liste des rubriques.

  2. Dans la page Rubrique Service Bus, dans la barre d’outils, sélectionnez + Abonnement.

    Image montrant le bouton Ajouter un abonnement.

  3. Dans la page Créer un abonnement, procédez comme suit :

    1. Entrez S1 pour le nom de l’abonnement.

    2. Entrez 3 pour Nombre maximal de remises.

    3. Ensuite, sélectionnez Créer pour créer l’abonnement.

      Image montrant la page Créer un abonnement.

Authentifier l’application sur Azure

Ce guide de démarrage pratique vous montre deux façons de vous connecter à Azure Service Bus : sans mot de passe et avec une chaîne de connexion.

La première option vous explique comment utiliser votre principal de sécurité dans Microsoft Entra ID et le contrôle d’accès en fonction du rôle (RBAC) pour vous connecter à un espace de noms Service Bus. Vous n’avez pas à vous soucier d’avoir une chaîne de connexion codée en dur dans votre code, dans un fichier config ni dans un stockage sécurisé comme Azure Key Vault.

La deuxième option consiste à se servir d’une chaîne de connexion pour se connecter à un espace de noms Service Bus. Si vous débutez avec Azure, vous trouverez peut-être l’option chaîne de connexion plus facile à suivre. Nous vous recommandons d’utiliser l’option sans mot de passe dans les applications réelles et les environnements de production. Pour plus d’informations, consultez Authentification et autorisation. Pour en savoir plus sur l’authentification sans mot de passe, reportez-vous à la page de présentation.

Attribuer des rôles à votre utilisateur Microsoft Entra

Lors du développement localement, assurez-vous que le compte d’utilisateur qui se connecte à Azure Service Bus dispose des autorisations appropriées. Vous aurez besoin du rôle Propriétaire de données Azure Service Bus pour envoyer et recevoir des messages. Pour vous attribuer ce rôle, vous aurez besoin du rôle Administrateur de l’accès utilisateur ou d’un autre rôle qui inclut l’action Microsoft.Authorization/roleAssignments/write. Vous pouvez attribuer des rôles RBAC Azure à un utilisateur à l’aide du Portail Azure, Azure CLI ou Azure PowerShell. Découvrez les étendues disponibles pour les attributions de rôles dans la page vue d’ensemble de l’étendue.

L’exemple suivant attribue le rôle Azure Service Bus Data Owner à votre compte d’utilisateur, qui fournit un accès complet aux ressources Azure Service Bus. Dans un scénario réel, suivez le principe des privilèges minimum pour accorder aux utilisateurs uniquement les autorisations minimales nécessaires à un environnement de production plus sécurisé.

Rôles Azure intégrés pour Azure Service Bus

Pour Azure Service Bus, la gestion des espaces de noms et de toutes les ressources associées via le Portail Azure et l’API de gestion des ressources Azure est déjà protégée à l’aide du modèle Azure RBAC. Azure fournit les rôles Azure intégrés ci-dessous pour autoriser l’accès à un espace de noms Service Bus :

  • Propriétaire de données Azure Service Bus : ce rôle permet l’accès aux données de l’espace de noms Service Bus et de ses entités (files d’attente, rubriques, abonnements et filtres). Un membre de ce rôle peut envoyer et recevoir des messages à partir de files d’attente ou de rubriques et d’abonnements.
  • Expéditeur de données Azure Service Bus : utilisez ce rôle pour autoriser l’accès en envoi à l’espace de noms Service Bus et à ses entités.
  • Récepteur de données Azure Service Bus : utilisez ce rôle pour autoriser l’accès en réception à l’espace de noms Service Bus et à ses entités.

Si vous souhaitez créer un rôle personnalisé, consultez Droits requis pour les opérations Service Bus.

Ajouter un utilisateur Microsoft Entra au rôle Propriétaire Azure Service Bus

Ajoutez votre nom d’utilisateur Microsoft Entra au rôle Propriétaire de données Azure Service Bus au niveau de l’espace de noms Service Bus. Il permet à une application exécutée dans le contexte de votre compte d’utilisateur d’envoyer des messages à une file d’attente ou à une rubrique et d’en recevoir auprès d’une file d’attente ou de l’abonnement d’une rubrique.

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.

  1. Si la page Espace de noms Service Bus n’est pas ouverte sur le Portail Azure, recherchez votre espace de noms Service Bus à l’aide de la barre de recherche principale ou du volet de navigation de gauche.

  2. Dans la page vue d’ensemble, sélectionnez Contrôle d’accès (IAM) dans le menu de gauche.

  3. Sur la page Contrôle d’accès (IAM), sélectionnez l’onglet Attributions de rôles.

  4. Sélectionnez + Ajouter dans le menu supérieur, puis Ajouter une attribution de rôle dans le menu déroulant résultant.

    Capture d’écran montrant comment attribuer un rôle.

  5. Utilisez la zone de recherche pour filtrer les résultats sur le rôle souhaité. Pour cet exemple, recherchez Azure Service Bus Data Owner et sélectionnez le résultat correspondant. Ensuite, choisissez Suivant.

  6. Sous Attribuer l’accès à, sélectionnez Utilisateur, groupe ou principal de service, puis sélectionnez + Sélectionner des membres.

  7. Dans la boîte de dialogue, recherchez votre nom d’utilisateur Microsoft Entra (généralement votre adresse e-mail utilisateur@domaine), puis choisissez Sélectionner en bas de la boîte de dialogue.

  8. Sélectionnez Vérifier + affecter pour accéder à la page finale, puis Vérifier + attribuer à nouveau pour terminer le processus.

Lancer Visual Studio et vous connecter à Azure

Vous pouvez autoriser l’accès à l’espace de noms Service Bus en procédant comme suit :

  1. Lancez Visual Studio. Si la fenêtre Démarrage s’affiche, sélectionnez le lien Continuer sans code dans le volet de droite.

  2. Sélectionnez le bouton Se connecter en haut à droite de Visual Studio.

    Capture d’écran montrant le bouton de connexion à Azure à l’aide de Visual Studio.

  3. Connectez-vous à l’aide du compte Microsoft Entra auquel vous avez attribué un rôle précédemment.

    Capture d’écran montrant la sélection de compte.

Envoyez des messages à la rubrique

Cette section montre comment créer une application console .NET pour envoyer des messages à une rubrique Service Bus.

Notes

Ce guide de démarrage rapide fournit des instructions pas à pas pour un scénario simple qui consiste à envoyer un lot de messages à une rubrique Service Bus et à recevoir ces messages à partir d’un abonnement de la rubrique. Pour plus d'exemples sur d'autres scénarios et des scénarios avancés, voir Exemples .NET Service Bus sur GitHub.

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.

      Image représentant la boîte de dialogue Créer un projet avec C# et la console sélectionnés

  3. Entrez TopicSender comme nom de projet, ServiceBusTopicQuickStart comme nom de solution, puis sélectionnez Suivant.
  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.ServiceBus.

    Install-Package Azure.Messaging.ServiceBus
    
  3. Exécutez la commande suivante pour installer le package NuGet Azure.Identity.

    Install-Package Azure.Identity
    

Ajouter du code pour envoyer des messages à la rubrique

  1. Remplacez le contenu de Program.cs par le code suivant. Les étapes importantes sont décrites dans cette section, et vous trouverez des informations supplémentaires dans les commentaires de code.

    1. Crée un objet ServiceBusClient à l’aide de l’objetDefaultAzureCredential. DefaultAzureCredential détecte et utilise automatiquement les informations d’identification de votre connexion Visual Studio pour vous authentifier auprès d’Azure Service Bus.
    2. Utilise la méthode CreateSender sur l’objet ServiceBusClient pour créer un objet ServiceBusSender pour la rubrique Service Bus spécifique.
    3. Crée un objet ServiceBusMessageBatch à l’aide de ServiceBusSender.CreateMessageBatchAsync.
    4. Ajoutez des messages au lot à l’aide de ServiceBusMessageBatch.TryAddMessage.
    5. Envoie le lot de messages à la rubrique Service Bus avec la méthode ServiceBusSender.SendMessagesAsync.

    Important

    Remplacez les valeurs d’espace réservé (<NAMESPACE-NAME> et <TOPIC-NAME>) dans l’extrait de code par les noms de votre espace de noms et de votre rubrique Service Bus.

    using System.Threading.Tasks;
    using Azure.Messaging.ServiceBus;
    using Azure.Identity;
    
    // the client that owns the connection and can be used to create senders and receivers
    ServiceBusClient client;
    
    // the sender used to publish messages to the topic
    ServiceBusSender sender;
    
    // number of messages to be sent to the topic
    const int numOfMessages = 3;
    
    // The Service Bus client types are safe to cache and use as a singleton for the lifetime
    // of the application, which is best practice when messages are being published or read
    // regularly.
    
    //TODO: Replace the "<NAMESPACE-NAME>" and "<TOPIC-NAME>" placeholders.
    client = new ServiceBusClient(
        "<NAMESPACE-NAME>.servicebus.windows.net",
        new DefaultAzureCredential());
    sender = client.CreateSender("<TOPIC-NAME>");
    
    // create a batch 
    using ServiceBusMessageBatch messageBatch = await sender.CreateMessageBatchAsync();
    
    for (int i = 1; i <= numOfMessages; i++)
    {
        // try adding a message to the batch
        if (!messageBatch.TryAddMessage(new ServiceBusMessage($"Message {i}")))
        {
            // if it is too large for the batch
            throw new Exception($"The message {i} is too large to fit in the batch.");
        }
    }
    
    try
    {
        // Use the producer client to send the batch of messages to the Service Bus topic
        await sender.SendMessagesAsync(messageBatch);
        Console.WriteLine($"A batch of {numOfMessages} messages has been published to the topic.");
    }
    finally
    {
        // Calling DisposeAsync on client types is required to ensure that network
        // resources and other unmanaged objects are properly cleaned up.
        await sender.DisposeAsync();
        await client.DisposeAsync();
    }
    
    Console.WriteLine("Press any key to end the application");
    Console.ReadKey();
    
  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.

    A batch of 3 messages has been published to the topic
    

    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, il 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 Service Bus.

    2. Dans la page Vue d’ensemble, dans le volet central inférieur, basculez vers l’onglet Rubriques, puis sélectionnez la rubrique Service Bus. Dans l’exemple suivant, il s’agit de mytopic.

      Sélectionner la rubrique

    3. Dans la page Rubrique Service Bus, dans le graphique Messages de la section inférieure Métriques, vous pouvez voir trois messages entrants pour la rubrique. Si vous ne voyez pas cette valeur, attendez quelques minutes, puis actualisez la page pour voir le graphique mis à jour.

      Messages envoyés à la rubrique

    4. Sélectionnez l’abonnement dans le volet inférieur. Dans l’exemple suivant, il s’agit de S1. Dans la page Abonnement Service Bus, vous voyez que Nombre de messages actifs a pour valeur 3. L’abonnement a reçu les trois messages que vous avez envoyés à la rubrique, mais aucun destinataire ne les a encore sélectionnés.

      Messages reçus au niveau de l’abonnement

Réception des messages d’un abonnement

Dans cette section, vous créez une application console .NET qui reçoit les messages de l’abonnement à la rubrique Service Bus.

Remarque

Ce guide de démarrage rapide fournit des instructions pas à pas pour un scénario simple qui consiste à envoyer un lot de messages à une rubrique Service Bus et à recevoir ces messages à partir d’un abonnement de la rubrique. Pour plus d'exemples sur d'autres scénarios et des scénarios avancés, voir Exemples .NET Service Bus sur GitHub.

Créer un projet pour le récepteur

  1. Dans la fenêtre Explorateur de solutions, cliquez avec le bouton droit sur la solution ServiceBusTopicQuickStart, pointez sur Ajouter, puis sélectionnez Nouveau projet.
  2. Sélectionnez Application console, puis Suivant.
  3. Entrez SubscriptionReceiver comme Nom du projet, puis sélectionnez Suivant.
  4. Sur la page Informations supplémentaires, sélectionnez Créer.
  5. Dans la fenêtre Explorateur de solutions, cliquez avec le bouton droit sur SubscriptionReceiver, 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. Sélectionnez SubscriptionReceiver dans la liste déroulante Projet par défaut.

  3. Exécutez la commande suivante pour installer le package NuGet Azure.Messaging.ServiceBus.

    Install-Package Azure.Messaging.ServiceBus
    
  4. Exécutez la commande suivante pour installer le package NuGet Azure.Identity.

    Install-Package Azure.Identity
    

Ajouter du code pour recevoir des messages de l’abonnement

Dans cette section, vous ajoutez du code pour récupérer les messages de l’abonnement.

  1. Remplacez le contenu existant de Program.cs par les propriétés et méthodes suivantes :

    using System.Threading.Tasks;
    using Azure.Messaging.ServiceBus;
    using Azure.Identity;
    
    // the client that owns the connection and can be used to create senders and receivers
    ServiceBusClient client;
    
    // the processor that reads and processes messages from the subscription
    ServiceBusProcessor processor;    
    
    // handle received messages
    async Task MessageHandler(ProcessMessageEventArgs args)
    {
        string body = args.Message.Body.ToString();
        Console.WriteLine($"Received: {body} from subscription.");
    
        // complete the message. messages is deleted from the subscription. 
        await args.CompleteMessageAsync(args.Message);
    }
    
    // handle any errors when receiving messages
    Task ErrorHandler(ProcessErrorEventArgs args)
    {
        Console.WriteLine(args.Exception.ToString());
        return Task.CompletedTask;
    }
    
  2. Ajoutez le code suivant à la fin de Program.cs.

    • Crée un objet ServiceBusClient à l’aide de l’objetDefaultAzureCredential. DefaultAzureCredential détecte et utilise automatiquement les informations d’identification de votre connexion Visual Studio pour vous authentifier auprès d’Azure Service Bus.
    • Appelle la méthode CreateProcessor sur l'objet ServiceBusClient pour créer un objet ServiceBusProcessor pour la rubrique Service Bus spécifiée.
    • Spécifie des gestionnaires pour les événements ProcessMessageAsync et ProcessErrorAsync de l’objet ServiceBusProcessor.
    • Démarre le traitement des messages en appelant StartProcessingAsync sur l' objet ServiceBusProcessor.
    • Lorsque l’utilisateur appuie sur une clé pour terminer le traitement, il appelle StopProcessingAsync sur l' objet ServiceBusProcessor.

    Important

    Remplacez les valeurs d’espace réservé (<NAMESPACE-NAME>, <TOPIC-NAME> et <SUBSCRIPTION-NAME>) dans l’extrait de code par les noms de votre espace de noms, de votre rubrique et de votre abonnement Service Bus.

    Pour plus d'informations, consultez les commentaires du code.

    // The Service Bus client types are safe to cache and use as a singleton for the lifetime
    // of the application, which is best practice when messages are being published or read
    // regularly.
    //
    // Create the clients that we'll use for sending and processing messages.
    // TODO: Replace the <NAMESPACE-NAME> placeholder
    client = new ServiceBusClient(
        "<NAMESPACE-NAME>.servicebus.windows.net",
        new DefaultAzureCredential());
    
    // create a processor that we can use to process the messages
    // TODO: Replace the <TOPIC-NAME> and <SUBSCRIPTION-NAME> placeholders
    processor = client.CreateProcessor("<TOPIC-NAME>", "<SUBSCRIPTION-NAME>", new ServiceBusProcessorOptions());
    
    try
    {
        // add handler to process messages
        processor.ProcessMessageAsync += MessageHandler;
    
        // add handler to process any errors
        processor.ProcessErrorAsync += ErrorHandler;
    
        // start processing 
        await processor.StartProcessingAsync();
    
        Console.WriteLine("Wait for a minute and then press any key to end the processing");
        Console.ReadKey();
    
        // stop processing 
        Console.WriteLine("\nStopping the receiver...");
        await processor.StopProcessingAsync();
        Console.WriteLine("Stopped receiving messages");
    }
    finally
    {
        // Calling DisposeAsync on client types is required to ensure that network
        // resources and other unmanaged objects are properly cleaned up.
        await processor.DisposeAsync();
        await client.DisposeAsync();
    }
    
  3. Voici à quoi doit ressembler votre fichier Program.cs :

    using System;
    using System.Threading.Tasks;
    using Azure.Messaging.ServiceBus;
    using Azure.Identity;
    
    // the client that owns the connection and can be used to create senders and receivers
    ServiceBusClient client;
    
    // the processor that reads and processes messages from the subscription
    ServiceBusProcessor processor;
    
    // handle received messages
    async Task MessageHandler(ProcessMessageEventArgs args)
    {
        string body = args.Message.Body.ToString();
        Console.WriteLine($"Received: {body} from subscription.");
    
        // complete the message. messages is deleted from the subscription. 
        await args.CompleteMessageAsync(args.Message);
    }
    
    // handle any errors when receiving messages
    Task ErrorHandler(ProcessErrorEventArgs args)
    {
        Console.WriteLine(args.Exception.ToString());
        return Task.CompletedTask;
    }
    
    // The Service Bus client types are safe to cache and use as a singleton for the lifetime
    // of the application, which is best practice when messages are being published or read
    // regularly.
    //
    // Create the clients that we'll use for sending and processing messages.
    // TODO: Replace the <NAMESPACE-NAME> placeholder
    client = new ServiceBusClient(
        "<NAMESPACE-NAME>.servicebus.windows.net",
        new DefaultAzureCredential());
    
    // create a processor that we can use to process the messages
    // TODO: Replace the <TOPIC-NAME> and <SUBSCRIPTION-NAME> placeholders
    processor = client.CreateProcessor("<TOPIC-NAME>", "<SUBSCRIPTION-NAME>", new ServiceBusProcessorOptions());
    
    try
    {
        // add handler to process messages
        processor.ProcessMessageAsync += MessageHandler;
    
        // add handler to process any errors
        processor.ProcessErrorAsync += ErrorHandler;
    
        // start processing 
        await processor.StartProcessingAsync();
    
        Console.WriteLine("Wait for a minute and then press any key to end the processing");
        Console.ReadKey();
    
        // stop processing 
        Console.WriteLine("\nStopping the receiver...");
        await processor.StopProcessingAsync();
        Console.WriteLine("Stopped receiving messages");
    }
    finally
    {
        // Calling DisposeAsync on client types is required to ensure that network
        // resources and other unmanaged objects are properly cleaned up.
        await processor.DisposeAsync();
        await client.DisposeAsync();
    }
    
  4. Générez le projet et vérifiez qu’il ne présente pas d’erreurs.

  5. Exécutez l’application réceptrice. Vous devriez voir les messages reçus. Appuyez sur n’importe quelle touche pour arrêter le récepteur et l’application.

    Wait for a minute and then press any key to end the processing
    Received: Message 1 from subscription: S1
    Received: Message 2 from subscription: S1
    Received: Message 3 from subscription: S1
    
    Stopping the receiver...
    Stopped receiving messages
    
  6. Vérifiez à nouveau le portail.

    • Dans la page Rubrique Service Bus, dans le graphique Messages, vous voyez trois messages entrants et trois messages sortants. Si vous ne voyez pas ces valeurs, attendez quelques minutes et actualisez la page pour voir une mise à jour du graphique.

      Messages envoyés et reçus

    • Dans la page Abonnement Service Bus, vous voyez que Nombre de messages actifs est égal à zéro. Cela est dû au fait qu’un destinataire a reçu des messages de cet abonnement et a terminé les messages.

      Nombre de messages actifs au niveau de l’abonnement à la fin

Étapes suivantes

Consultez la documentation et les exemples suivants :