Delen via


Aan de slag met Azure Service Bus-onderwerpen en -abonnementen (.NET)

In deze quickstart ziet u hoe u berichten verzendt naar een Service Bus-onderwerp en berichten ontvangt van een abonnement op dat onderwerp met behulp van de Azure.Messaging.ServiceBus .NET-bibliotheek.

In deze quickstart voert u de volgende stappen uit:

  1. Een Service Bus-naamruimte maken met de Azure-portal.
  2. Een Service Bus-onderwerp maken met de Azure-portal.
  3. Een Service Bus-abonnement maken met de Azure-portal.
  4. Schrijf een .NET-consoletoepassing om een set berichten naar het onderwerp te verzenden.
  5. Schrijf een .NET-consoletoepassing om deze berichten van het abonnement te ontvangen.

Notitie

In deze quickstart vindt u stapsgewijze instructies voor het implementeren van een eenvoudig scenario voor het verzenden van een batch berichten naar een Service Bus-onderwerp en het ontvangen van die berichten van een abonnement op het onderwerp. Zie Service Bus .NET-voorbeelden op GitHub voor meer voorbeelden over andere en geavanceerde scenario's.

  • In deze quickstart ziet u twee manieren om verbinding te maken met Azure Service Bus: verbindingsreeks en zonder wachtwoord. De eerste optie laat zien hoe u een verbindingsreeks gebruikt om verbinding te maken met een Service Bus-naamruimte. De tweede optie laat zien hoe u uw beveiligingsprincipaal gebruikt in Microsoft Entra ID en het op rollen gebaseerde toegangsbeheer (RBAC) om verbinding te maken met een Service Bus-naamruimte. U hoeft zich geen zorgen te maken over het in code vastgelegde verbindingsreeks in uw code of in een configuratiebestand of in beveiligde opslag, zoals Azure Key Vault. Als u nog niet eerder met Azure bent, kunt u de verbindingsreeks optie gemakkelijker volgen. We raden u aan de optie zonder wachtwoord te gebruiken in echte toepassingen en productieomgevingen. Zie Verificatie en autorisatie voor meer informatie.

Vereisten

Als u geen toegang hebt tot de service, raadpleegt u het Service Bus-overzicht voordat u deze quickstart uitvoert.

  • Azure-abonnement. Als u Azure-services, waaronder Azure Service Bus, wilt gebruiken, hebt u een abonnement nodig. Als u geen bestaand Azure-account hebt, kunt u zich aanmelden voor een gratis proefversie.
  • Visual Studio 2022. De voorbeeldtoepassing maakt gebruik van nieuwe functies die zijn geïntroduceerd in C# 10. U kunt de Service Bus-clientbibliotheek nog steeds gebruiken met eerdere C#-taalversies, maar de syntaxis kan variëren. Als u de nieuwste syntaxis wilt gebruiken, raden we u aan .NET 6.0 of hoger te installeren en de taalversie in te stellen op latest. Als u Visual Studio gebruikt, zijn versies vóór Visual Studio 2022 niet compatibel met de hulpprogramma's die nodig zijn om C# 10-projecten te bouwen.

Een naamruimte in de Azure-portal maken

Als u Service Bus-berichtenentiteiten wilt gebruiken in Azure, moet u eerst een naamruimte maken met een naam die uniek is binnen Azure. Een naamruimte biedt een bereikcontainer voor Service Bus-resources (wachtrijen, onderwerpen, enzovoort) in uw toepassing.

Ga als volgt te werk om een naamruimte te maken:

  1. Meld u aan bij het Azure-portaal.

  2. Navigeer naar de pagina Alle services.

  3. Selecteer integratie in de linkernavigatiebalk in de lijst met categorieën, beweeg de muisaanwijzer over Service Bus en selecteer + vervolgens de knop op de Service Bus-tegel.

    Afbeelding van de selectie van Een resource maken, integratie en vervolgens Service Bus in het menu.

  4. Voer in de tag Basisinformatie van de pagina Naamruimte maken de volgende stappen uit:

    1. Kies voor Abonnement een Azure-abonnement waarin u de naamruimte maakt.

    2. Kies voor Resourcegroep een bestaande resourcegroep waarin de naamruimte moet worden opgenomen of maak een nieuwe resourcegroep.

    3. Voer een naam in voor de naamruimte. De naamruimtenaam moet voldoen aan de volgende naamconventies:

      • De naam moet uniek zijn in Azure. In het systeem wordt onmiddellijk gecontroleerd of de naam beschikbaar is.
      • De naamlengte is ten minste 6 en maximaal 50 tekens.
      • De naam mag alleen letters, cijfers, afbreekstreepjes "-" bevatten.
      • De naam moet beginnen met een letter en eindigen op een letter of cijfer.
      • De naam eindigt niet op '-sb' of '-mgmt'.
    4. Kies voor Locatie de regio waarin uw naamruimte moet worden gehost.

    5. Selecteer voor de prijscategorie de prijscategorie (Basic, Standard of Premium) voor de naamruimte. Voor deze quickstart selecteert u Standard.

      Belangrijk

      Kies Standard of Premium indien u gebruik wilt maken van onderwerpen en abonnementen. Onderwerpen/abonnementen worden niet ondersteund in de prijscategorie Basic.

      Als u de Prijscategorie Premium hebt geselecteerd, geeft u het aantal berichteneenheden op. De Premium-prijscategorie biedt isolatie van resources op het niveau van de CPU en het geheugen, zodat elke workload geïsoleerd wordt uitgevoerd. Deze resourcecontainer wordt een Messaging-eenheid genoemd. Een Premium-naamruimte heeft ten minste één Messaging-eenheid. U kunt 1, 2, 4, 8 of 16 berichteneenheden selecteren voor elke Service Bus Premium-naamruimte. Zie Service Bus Premium Messaging voor meer informatie.

    6. Selecteer Controleren en maken onderaan de pagina.

      Afbeelding van de pagina Een naamruimte maken

    7. Controleer de instellingen op de pagina Beoordelen en maken en selecteer Maken.

  5. Zodra de implementatie van de resource is geslaagd, selecteert u Ga naar de resource op de implementatiepagina.

    Afbeelding van de pagina geslaagde implementatie met de koppeling Ga naar resource.

  6. U ziet de startpagina voor uw Service Bus-naamruimte.

    Afbeelding van de startpagina van de Service Bus-naamruimte die is gemaakt.

Een onderwerp maken met de Azure-portal

  1. Selecteer in het linkermenu op de pagina Service Bus-naamruimte de optie Onderwerpen.

  2. Selecteer + Onderwerp op de werkbalk.

  3. Voer een naam in voor het onderwerp. Houd voor de overige opties de standaardwaarden aan.

  4. Selecteer Maken.

    Afbeelding van de pagina Onderwerp maken.

Een abonnement op het onderwerp maken

  1. Selecteer het onderwerp dat u in de vorige sectie hebt gemaakt.

    Afbeelding van de selectie van het onderwerp in de lijst met onderwerpen.

  2. Selecteer + Abonnement op de werkbalk op de pagina Service Bus-onderwerp.

    Afbeelding van de knop Abonnement toevoegen.

  3. Voer op de pagina Abonnement maken de volgende stappen uit:

    1. Voer S1 in als naam van het abonnement.

    2. Voer 3 in voor maximaal aantal bezorgingen.

    3. Selecteer vervolgens Maken om het abonnement te maken.

      Afbeelding van de pagina Abonnement maken.

De app verifiëren bij Azure

In deze quickstart ziet u twee manieren om verbinding te maken met Azure Service Bus: zonder wachtwoord en verbindingsreeks.

De eerste optie laat zien hoe u uw beveiligingsprincipaal gebruikt in Microsoft Entra ID en op rollen gebaseerd toegangsbeheer (RBAC) om verbinding te maken met een Service Bus-naamruimte. U hoeft zich geen zorgen te maken over het in code vastgelegde verbindingsreeks in uw code of in een configuratiebestand of in een beveiligde opslag, zoals Azure Key Vault.

De tweede optie laat zien hoe u een verbindingsreeks gebruikt om verbinding te maken met een Service Bus-naamruimte. Als u nog niet eerder met Azure werkt, kunt u de verbindingsreeks optie gemakkelijker volgen. We raden u aan de optie zonder wachtwoord te gebruiken in echte toepassingen en productieomgevingen. Zie Verificatie en autorisatie voor meer informatie. U kunt ook meer lezen over verificatie zonder wachtwoord op de overzichtspagina.

Rollen toewijzen aan uw Microsoft Entra-gebruiker

Zorg er bij het lokaal ontwikkelen voor dat het gebruikersaccount dat verbinding maakt met Azure Service Bus over de juiste machtigingen beschikt. U hebt de rol Azure Service Bus-gegevenseigenaar nodig om berichten te kunnen verzenden en ontvangen. Als u uzelf deze rol wilt toewijzen, hebt u de rol Gebruikerstoegangsbeheerder of een andere rol nodig die de Microsoft.Authorization/roleAssignments/write actie bevat. U kunt Azure RBAC-rollen toewijzen aan een gebruiker met behulp van Azure Portal, Azure CLI of Azure PowerShell. Meer informatie over de beschikbare bereiken voor roltoewijzingen op de overzichtspagina van het bereik.

In het volgende voorbeeld wordt de Azure Service Bus Data Owner rol toegewezen aan uw gebruikersaccount, dat volledige toegang biedt tot Azure Service Bus-resources. Volg in een echt scenario het principe van minimale bevoegdheden om gebruikers alleen de minimale machtigingen te geven die nodig zijn voor een veiligere productieomgeving.

Ingebouwde Azure-rollen voor Azure Service Bus

Voor Azure Service Bus is het beheer van naamruimten en alle gerelateerde resources via Azure Portal en de Azure Resource Management-API al beveiligd met behulp van het Azure RBAC-model. Azure biedt de onderstaande ingebouwde Azure-rollen voor het autoriseren van toegang tot een Service Bus-naamruimte:

  • Azure Service Bus-gegevenseigenaar: hiermee schakelt u gegevenstoegang tot de Service Bus-naamruimte en de bijbehorende entiteiten (wachtrijen, onderwerpen, abonnementen en filters) in. Een lid van deze rol kan berichten verzenden en ontvangen van wachtrijen of onderwerpen/abonnementen.
  • Azure Service Bus-gegevenszender: gebruik deze rol om de verzendtoegang tot de Service Bus-naamruimte en de bijbehorende entiteiten te geven.
  • Azure Service Bus-gegevensontvanger: gebruik deze rol om de ontvangsttoegang te geven tot de Service Bus-naamruimte en de bijbehorende entiteiten.

Als u een aangepaste rol wilt maken, raadpleegt u Rechten die vereist zijn voor Service Bus-bewerkingen.

Microsoft Entra-gebruiker toevoegen aan de rol Azure Service Bus-eigenaar

Voeg uw Microsoft Entra-gebruikersnaam toe aan de rol Azure Service Bus-gegevenseigenaar op het niveau van de Service Bus-naamruimte. Hiermee kan een app die wordt uitgevoerd in de context van uw gebruikersaccount berichten verzenden naar een wachtrij of een onderwerp en berichten ontvangen van een wachtrij of het abonnement van een onderwerp.

Belangrijk

In de meeste gevallen duurt het een paar minuten voordat de roltoewijzing is doorgegeven in Azure. In zeldzame gevallen kan het maximaal acht minuten duren. Als u verificatiefouten ontvangt wanneer u de code voor het eerst uitvoert, wacht u even en probeert u het opnieuw.

  1. Als u de pagina Service Bus-naamruimte niet hebt geopend in Azure Portal, zoekt u uw Service Bus-naamruimte met behulp van de hoofdzoekbalk of linkernavigatiebalk.

  2. Selecteer op de overzichtspagina toegangsbeheer (IAM) in het linkermenu.

  3. Selecteer op de pagina Toegangsbeheer (IAM) het tabblad Roltoewijzingen .

  4. Selecteer + Toevoegen in het bovenste menu en voeg vervolgens roltoewijzing toe in de resulterende vervolgkeuzelijst.

    Een schermopname die laat zien hoe u een rol toewijst.

  5. Gebruik het zoekvak om de resultaten te filteren op de gewenste rol. In dit voorbeeld zoekt Azure Service Bus Data Owner en selecteert u het overeenkomende resultaat. Kies vervolgens Volgende.

  6. Selecteer onder Toegang toewijzen de optie Gebruiker, groep of service-principal en kies vervolgens + Leden selecteren.

  7. Zoek in het dialoogvenster naar uw Microsoft Entra-gebruikersnaam (meestal uw user@domain e-mailadres) en kies Vervolgens onderaan het dialoogvenster Selecteren .

  8. Selecteer Beoordelen + toewijzen om naar de laatste pagina te gaan en vervolgens opnieuw beoordelen en toewijzen om het proces te voltooien.

Visual Studio starten en u aanmelden bij Azure

U kunt toegang tot de Service Bus-naamruimte autoriseren met behulp van de volgende stappen:

  1. Start Visual Studio. Als u het venster Aan de slag ziet, selecteert u de koppeling Doorgaan zonder code in het rechterdeelvenster.

  2. Selecteer de knop Aanmelden in de rechterbovenhoek van Visual Studio.

    Schermopname van de knop om u aan te melden bij Azure met behulp van Visual Studio.

  3. Meld u aan met het Microsoft Entra-account waaraan u eerder een rol hebt toegewezen.

    Schermopname van de accountselectie.

Berichten naar het onderwerp verzenden

In deze sectie wordt beschreven hoe u een .NET-consoletoepassing maakt voor het verzenden van berichten naar een Service Bus-onderwerp.

Notitie

In deze quickstart vindt u stapsgewijze instructies voor het implementeren van een eenvoudig scenario voor het verzenden van een batch berichten naar een Service Bus-onderwerp en het ontvangen van die berichten van een abonnement op het onderwerp. Zie Service Bus .NET-voorbeelden op GitHub voor meer voorbeelden over andere en geavanceerde scenario's.

Een consoletoepassing maken

  1. Selecteer in Visual Studio het menu File ->New ->Project .
  2. Voer in het dialoogvenster Een nieuw project maken de volgende stappen uit: Als u dit dialoogvenster niet ziet, selecteert u Bestand in het menu, selecteert u Nieuw en selecteert u Vervolgens Project.
    1. Selecteer de programmeertaal C#.

    2. Selecteer Console als het type toepassing.

    3. Selecteer Console-app in de lijst met resultaten.

    4. Selecteer vervolgens Volgende.

      Afbeelding van het dialoogvenster Een nieuw project maken met C# en Console geselecteerd

  3. Voer TopicSender in voor de projectnaam, ServiceBusTopicQuickStart voor de naam van de oplossing en selecteer vervolgens Volgende.
  4. Selecteer Op de pagina Aanvullende informatie de optie Maken om de oplossing en het project te maken.

De NuGet-pakketten toevoegen aan het project

  1. Selecteer Tools>NuGet-pakketbeheer>Package Manager Console in het menu.

  2. Voer de volgende opdracht uit om het NuGet-pakket Azure.Messaging.ServiceBus te installeren.

    Install-Package Azure.Messaging.ServiceBus
    
  3. Voer de volgende opdracht uit om het Azure.Identity NuGet-pakket te installeren.

    Install-Package Azure.Identity
    

Code toevoegen om berichten naar het onderwerp te verzenden

  1. Vervang de inhoud van Program.cs door de volgende code. De belangrijke stappen worden in deze sectie beschreven, met aanvullende informatie in de codeopmerkingen.

    1. Hiermee maakt u een ServiceBusClient-object met behulp van het DefaultAzureCredential object. DefaultAzureCredential detecteert en gebruikt automatisch de referenties van uw Visual Studio-aanmelding om te verifiëren bij Azure Service Bus.
    2. Roept de methode CreateSender op het ServiceBusClient object aan om een ServiceBusSender-object te maken voor het specifieke Service Bus-onderwerp.
    3. Hiermee maakt u een ServiceBusMessageBatch-object met behulp van de ServiceBusSender.CreateMessageBatchAsync.
    4. Voeg berichten toe aan de batch met behulp van de ServiceBusMessageBatch.TryAddMessage.
    5. Verzendt de batch berichten naar het Service Bus-onderwerp met behulp van de methode ServiceBusSender.SendMessagesAsync .

    Belangrijk

    Werk de waarden van tijdelijke aanduidingen (<NAMESPACE-NAME> en <TOPIC-NAME>) in het codefragment bij met de namen van uw Service Bus-naamruimte en -onderwerp.

    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. Bouw het project en controleer of er geen fouten zijn.

  3. Voer het programma uit en wacht op het bevestigingsbericht.

    A batch of 3 messages has been published to the topic
    

    Belangrijk

    In de meeste gevallen duurt het een paar minuten voordat de roltoewijzing is doorgegeven in Azure. In zeldzame gevallen kan het maximaal acht minuten duren. Als u verificatiefouten ontvangt wanneer u de code voor het eerst uitvoert, wacht u even en probeert u het opnieuw.

  4. Volg deze stappen in Azure Portal:

    1. Navigeer naar uw Service Bus-naamruimte.

    2. Ga op de pagina Overzicht, in het deelvenster midden onder, naar het tabblad Onderwerpen en selecteer het Service Bus-onderwerp. In het volgende voorbeeld is dat mytopic.

      Onderwerp selecteren

    3. Op de pagina Service Bus-onderwerp , in de grafiek Berichten in de onderste sectie Metrische gegevens , ziet u dat er drie binnenkomende berichten voor het onderwerp zijn. Als u de waarde niet ziet, wacht u enkele minuten en vernieuwt u de pagina om de bijgewerkte grafiek te zien.

      Berichten die naar het onderwerp zijn verzonden

    4. Selecteer het abonnement in het onderste deelvenster. In het volgende voorbeeld is dat S1. Op de pagina Service Bus-abonnement ziet u het aantal actieve berichten als 3. Het abonnement heeft de drie berichten ontvangen die u naar het onderwerp hebt verzonden, maar er is nog geen ontvanger gekozen.

      Berichten die zijn ontvangen in het abonnement

Berichten van een abonnement ontvangen

In deze sectie maakt u een .NET-consoletoepassing die berichten van het abonnement ontvangt naar het Service Bus-onderwerp.

Notitie

In deze quickstart vindt u stapsgewijze instructies voor het implementeren van een eenvoudig scenario voor het verzenden van een batch berichten naar een Service Bus-onderwerp en het ontvangen van die berichten van een abonnement op het onderwerp. Zie Service Bus .NET-voorbeelden op GitHub voor meer voorbeelden over andere en geavanceerde scenario's.

Een project maken voor de ontvanger

  1. Klik in het venster Solution Explorer met de rechtermuisknop op de oplossing ServiceBusTopicQuickStart, wijs Toevoegen aan en selecteer Nieuw project.
  2. Selecteer Consoletoepassing en selecteer Volgende.
  3. Voer SubscriptionReceiver in voor de projectnaam en selecteer Volgende.
  4. Selecteer Maken op de pagina Aanvullende informatie.
  5. Klik in het venster Solution Explorer met de rechtermuisknop op SubscriptionReceiver en selecteer Instellen als opstartproject.

De NuGet-pakketten toevoegen aan het project

  1. Selecteer Tools>NuGet-pakketbeheer>Package Manager Console in het menu.

  2. Selecteer SubscriptionReceiver voor de vervolgkeuzelijst Standaardproject .

  3. Voer de volgende opdracht uit om het NuGet-pakket Azure.Messaging.ServiceBus te installeren.

    Install-Package Azure.Messaging.ServiceBus
    
  4. Voer de volgende opdracht uit om het Azure.Identity NuGet-pakket te installeren.

    Install-Package Azure.Identity
    

Code toevoegen om berichten van het abonnement te ontvangen

In deze sectie voegt u code toe om berichten op te halen uit het abonnement.

  1. Vervang de bestaande inhoud door Program.cs de volgende eigenschappen en methoden:

    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. Voeg de volgende code toe aan het einde van Program.cs.

    Belangrijk

    Werk tijdelijke aanduidingen (<NAMESPACE-NAME>, <TOPIC-NAME>, <SUBSCRIPTION-NAME>) in het codefragment bij met namen van uw Service Bus-naamruimte, onderwerp en abonnement.

    Zie codeopmerkingen voor meer informatie.

    // 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. Program.cs U ziet er als volgt uit:

    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. Bouw het project en controleer of er geen fouten zijn.

  5. Voer de ontvangende toepassing uit. U ziet nu de ontvangen berichten. Druk op een willekeurige toets om de ontvanger en de toepassing te stoppen.

    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. Controleer de portal opnieuw.

    • Op de pagina Service Bus-onderwerp ziet u in de grafiek Berichten drie binnenkomende berichten en drie uitgaande berichten. Als u deze aantallen niet ziet, wacht u een paar minuten en vernieuwt u de pagina om de bijgewerkte grafiek weer te geven.

      Verzonden en ontvangen berichten

    • Op de pagina Service Bus-abonnement ziet u dat het Aantal actieve berichten nul is. Dat komt omdat een ontvanger berichten van dit abonnement heeft ontvangen en de berichten heeft voltooid.

      Aantal actieve berichten in het abonnement aan het einde

Volgende stappen

Raadpleeg de volgende documentatie en voorbeelden: