Latihan: Mengirim dan menerima pesan dari antrean Azure Service Bus dengan menggunakan .NET.

Selesai

Dalam latihan ini Anda mempelajari cara:

  • Membuat namespace layanan Azure Service Bus, dan antrean, menggunakan Azure CLI.
  • Buat aplikasi konsol .NET untuk mengirim dan menerima pesan dari antrean.

Prasyarat

Masuk ke Azure

Di bagian ini, Anda membuka terminal dan membuat beberapa variabel yang digunakan di seluruh latihan lainnya untuk membuat entri perintah, dan pembuatan nama sumber daya yang unik, sedikit lebih mudah.

  1. Luncurkan Azure Cloud Shell dan pilih Bash serta lingkungan.

  2. Buat variabel yang digunakan dalam perintah Azure CLI. Ganti <myLocation> dengan wilayah di dekat Anda.

    myLocation=<myLocation>
    myNameSpaceName=az204svcbus$RANDOM
    

Membuat sumber daya Azure

  1. Buat grup sumber daya untuk menyimpan sumber daya Azure yang Sedang Anda buat.

    az group create --name az204-svcbus-rg --location $myLocation
    
  2. Buat namespace layanan olahpesan Azure Service Bus. Perintah berikut membuat namespace layanan menggunakan variabel yang Anda buat sebelumnya. Operasi ini membutuhkan waktu beberapa menit untuk diselesaikan.

    az servicebus namespace create \
        --resource-group az204-svcbus-rg \
        --name $myNameSpaceName \
        --location $myLocation
    
  3. Membuat antrean Bus Layanan

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

Mengambil string koneksi untuk Namespace layanan Azure Service Bus

  1. Buka portal Azure dan buka grup sumber daya az204-svcbus-rg.

  2. Pilih sumber daya az204svcbus yang Anda buat.

  3. Pilih Kebijakan akses bersama di bagian Pengaturan, lalu pilih kebijakan RootManageSharedAccessKey.

  4. Salin String Koneksi Primer dari kotak dialog yang terbuka dan simpan ke file, atau biarkan portal terbuka dan salin kunci jika diperlukan.

Membuat aplikasi konsol untuk mengirim pesan ke antrean

  1. Buka terminal lokal dan buat, serta ubah ke, direktori bernama az204svcbus, lalu jalankan perintah untuk meluncurkan Visual Studio Code.

    code .
    
  2. Buka terminal di Visual Studio Code dengan memilih Terminal > Terminal Baru di bilah menu dan jalankan perintah berikut untuk membuat aplikasi konsol dan tambahkan paket Azure.Messaging.ServiceBus.

    dotnet new console
    dotnet add package Azure.Messaging.ServiceBus
    
  3. Di Program.cs, tambahkan pernyataan using berikut di bagian atas file setelah pernyataan using saat ini.

    using Azure.Messaging.ServiceBus;
    
  4. Tambahkan variabel berikut ke kode dan atur connectionString variabel ke string koneksi yang Anda peroleh sebelumnya.

    // connection string to your Service Bus namespace
    string connectionString = "<CONNECTION STRING>";
    
    // name of your Service Bus topic
    string queueName = "az204-queue";
    
  5. Tambahkan kode berikut di bawah variabel yang baru saja Anda tambahkan. Lihat komentar kode untuk mengetahui rinciannya.

    // 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. Simpan file dan jalankan perintah dotnet build untuk memastikan tidak ada kesalahan.

  7. Jalankan program menggunakan dotnet run perintah dan tunggu pesan konfirmasi berikut. Kemudian tekan tombol apa pun untuk keluar dari program.

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

Meninjau hasil

  1. Masuk ke portal Azure dan navigasi ke namespace Bus Layanan Anda. Pilih Bus Layanan Explorer di panel navigasi antrean Bus Layanan.

  2. Pilih Intip dari awal dan tiga pesan yang dikirim muncul.

    Decorative.

Memperbarui proyek untuk menerima pesan ke antrean

Di bagian ini, Anda memperbarui program untuk menerima pesan dari antrean.

  1. Tambahkan kode berikut di akhir kode yang ada. Lihat komentar kode untuk mengetahui rinciannya.

    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. Gunakan perintah dotnet build untuk memastikan tidak ada kesalahan.

  3. dotnet run Gunakan perintah untuk menjalankan aplikasi. Ini mengirim tiga pesan lagi ke antrean dan kemudian mengambil keenam pesan. Tekan tombol apa pun untuk menghentikan penerima dan aplikasi.

    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
    

    Catatan

    Karena aplikasi mengirim dua batch pesan sebelum mengambilnya, Anda akan melihat dua batch dari tiga pesan yang diwakili dalam output.

  4. Kembali ke portal dan pilih Intip dari mulai lagi. Perhatikan bahwa tidak ada pesan yang muncul dalam antrean karena kami telah mengambil semuanya.

Membersihkan sumber daya

Jika sumber daya tidak diperlukan lagi, Anda dapat menggunakan perintah az group delete di Azure Cloud Shell untuk menghapus grup sumber daya.

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