Cvičení: Odesílání a příjem zpráv z fronty služby Service Bus pomocí .NET

Dokončeno

V tomto cvičení se naučíte:

  • Vytvořte obor názvů služby Service Bus a frontu pomocí Azure CLI.
  • Vytvořte konzolovou aplikaci .NET pro odesílání a příjem zpráv z fronty.

Požadavky

Přihlášení k Azure

V této části otevřete terminál a vytvoříte několik proměnných použitých ve zbytku cvičení, abyste usnadnili zadávání příkazů a vytvoření jedinečného názvu prostředku.

  1. Spusťte Azure Cloud Shell a vyberte Bash a prostředí.

  2. Vytvořte proměnné použité v příkazech Azure CLI. Nahraďte <myLocation> oblastí blízko vás.

    myLocation=<myLocation>
    myNameSpaceName=az204svcbus$RANDOM
    

Vytvoření zdrojů Azure

  1. Vytvořte skupinu prostředků pro uchovávání prostředků Azure, které vytváříte.

    az group create --name az204-svcbus-rg --location $myLocation
    
  2. Vytvořte obor názvů zasílání zpráv služby Service Bus. Následující příkaz vytvoří obor názvů pomocí proměnné, kterou jste vytvořili dříve. Dokončení operace trvá několik minut.

    az servicebus namespace create \
        --resource-group az204-svcbus-rg \
        --name $myNameSpaceName \
        --location $myLocation
    
  3. Vytvoření fronty Service Busu

    az servicebus queue create --resource-group az204-svcbus-rg \
        --namespace-name $myNameSpaceName \
        --name az204-queue
    

Načtení připojovací řetězec pro obor názvů služby Service Bus

  1. Otevřete Azure Portal a přejděte do skupiny prostředků az204-svcbus-rg .

  2. Vyberte prostředek az204svcbus, který jste vytvořili.

  3. V části Nastavení vyberte zásady sdíleného přístupu a pak vyberte zásadu RootManageSharedAccessKey.

  4. Zkopírujte primární připojovací řetězec z dialogového okna, které se otevře a uloží do souboru, nebo ponechte portál otevřený a v případě potřeby klíč zkopírujte.

Vytvoření konzolové aplikace pro odesílání zpráv do fronty

  1. Otevřete místní terminál a vytvořte a přejděte do adresáře az204svcbus a spusťte příkaz pro spuštění editoru Visual Studio Code.

    code .
    
  2. Otevřete terminál v editoru Visual Studio Code tak , že v řádku nabídek vyberete Terminál > nový terminál a spustíte následující příkazy, které vytvoří konzolovou aplikaci a přidá balíček Azure.Messaging.ServiceBus .

    dotnet new console
    dotnet add package Azure.Messaging.ServiceBus
    
  3. V Program.cs přidejte následující using příkazy do horní části souboru za aktuální using příkaz.

    using Azure.Messaging.ServiceBus;
    
  4. Do kódu přidejte následující proměnné a nastavte connectionString ji na připojovací řetězec, které jste získali dříve.

    // connection string to your Service Bus namespace
    string connectionString = "<CONNECTION STRING>";
    
    // name of your Service Bus topic
    string queueName = "az204-queue";
    
  5. Pod právě přidané proměnné přidejte následující kód. Podrobnosti najdete v komentářích ke kódu.

    // 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 queue
    ServiceBusSender sender;
    
    // Create the clients that we'll use for sending and processing messages.
    client = new ServiceBusClient(connectionString);
    sender = client.CreateSender(queueName);
    
    // create a batch 
    using ServiceBusMessageBatch messageBatch = await sender.CreateMessageBatchAsync();
    
    for (int i = 1; i <= 3; i++)
    {
        // try adding a message to the batch
        if (!messageBatch.TryAddMessage(new ServiceBusMessage($"Message {i}")))
        {
            // if an exception occurs
            throw new Exception($"Exception {i} has occurred.");
        }
    }
    
    try
    {
        // Use the producer client to send the batch of messages to the Service Bus queue
        await sender.SendMessagesAsync(messageBatch);
        Console.WriteLine($"A batch of three messages has been published to the queue.");
    }
    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("Follow the directions in the exercise to review the results in the Azure portal.");
    Console.WriteLine("Press any key to continue");
    Console.ReadKey();
    
  6. Uložte soubor a spusťte dotnet build příkaz, aby nedošlo k žádným chybám.

  7. Spusťte program pomocí dotnet run příkazu a počkejte na následující potvrzovací zprávu. Potom program ukončete stisknutím libovolné klávesy.

    A batch of three messages has been published to the queue.
    

Kontrola výsledků

  1. Přihlaste se k webu Azure Portal a přejděte do oboru názvů služby Service Bus.

  2. V části Entity v navigačním podokně vyberte Fronty a pak ze seznamu vyberte az204-queue.

  3. V navigačním podokně fronty služby Service Bus vyberte Service Bus Explorer .

  4. Vyberte Náhled od začátku a zobrazí se tři odeslané zprávy.

    Dekorativní.

Aktualizace projektu pro příjem zpráv do fronty

V této části aktualizujete program tak, aby přijímal zprávy z fronty.

  1. Na konec existujícího kódu přidejte následující kód. Podrobnosti najdete v komentářích ke kódu.

    ServiceBusProcessor processor;
    client = new ServiceBusClient(connectionString);
    
    // create a processor that we can use to process the messages
    processor = client.CreateProcessor(queueName, 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();
    }
    
    // handle received messages
    async Task MessageHandler(ProcessMessageEventArgs args)
    {
        string body = args.Message.Body.ToString();
        Console.WriteLine($"Received: {body}");
    
        // complete the message. messages is deleted from the queue. 
        await args.CompleteMessageAsync(args.Message);
    }
    
    // handle any errors when receiving messages
    Task ErrorHandler(ProcessErrorEventArgs args)
    {
        Console.WriteLine(args.Exception.ToString());
        return Task.CompletedTask;
    }
    
  2. dotnet build Pomocí příkazu se ujistěte, že nedošlo k žádným chybám.

  3. dotnet run Ke spuštění aplikace použijte příkaz. Odešle do fronty tři další zprávy a pak načte všechny šest zpráv. Stisknutím libovolné klávesy zastavte přijímač a aplikaci.

    Wait for a minute and then press any key to end the processing
    Received: Message 1
    Received: Message 2
    Received: Message 3
    Received: Message 1
    Received: Message 2
    Received: Message 3
    
    Stopping the receiver...
    Stopped receiving messages
    

    Poznámka:

    Vzhledem k tomu, že aplikace před načtením odeslala dvě dávky zpráv, měly by se ve výstupu zobrazit dvě dávky tří zpráv.

  4. Vraťte se na portál a znovu vyberte Náhled. Všimněte si, že se ve frontě nezobrazují žádné zprávy, protože jsme je všechny načetli.

Vyčištění prostředků

Pokud už prostředky nepotřebujete, můžete skupinu prostředků odebrat pomocí az group delete příkazu v Azure Cloud Shellu.

az group delete --name az204-svcbus-rg --no-wait