Panduan Cepat: Memulai dengan topik dan langganan Azure Service Bus (.NET)

Panduan mulai cepat ini menunjukkan cara mengirim pesan ke topik Azure Service Bus dan menerima pesan dari langganan ke topik tersebut menggunakan pustaka .NET Azure.Messaging.ServiceBus.

Di panduan mulai cepat ini, Anda melakukan langkah-langkah berikut:

  1. Membuat namespace Azure Service Bus menggunakan portal Microsoft Azure.
  2. Buat topik Bus Layanan, menggunakan portal Microsoft Azure.
  3. Buat langganan Bus Layanan untuk topik tersebut, menggunakan portal Microsoft Azure.
  4. Tulis aplikasi konsol .NET untuk mengirim sekumpulan pesan ke topik tersebut.
  5. Tulis aplikasi konsol .NET untuk menerima pesan tersebut dari langganan.

Catatan

Panduan cepat ini menyediakan instruksi langkah demi langkah untuk menerapkan skenario sederhana mengirimkan sekumpulan pesan ke topik Service Bus dan menerima pesan-pesan tersebut dari langganan topik. Untuk sampel lainnya pada skenario lain dan lanjutan, lihat sampel Azure Service Bus .NET di GitHub.

  • Panduan mulai cepat ini menunjukkan kepada Anda dua cara untuk menyambungkan ke Azure Service Bus: rangkaian koneksi dan tanpa menggunakan kata sandi. Opsi pertama memperlihatkan kepada Anda cara menggunakan string koneksi untuk menyambungkan ke namespace Bus Layanan. Opsi kedua menunjukkan cara menggunakan prinsipal keamanan Anda di Microsoft Entra ID dan kontrol akses berbasis peran (RBAC) untuk menyambungkan ke namespace Service Bus. Anda tidak perlu khawatir tentang memiliki string koneksi yang dikodekan secara permanen dalam kode Anda atau dalam file konfigurasi atau di penyimpanan aman seperti Azure Key Vault. Jika Anda baru menggunakan Azure, Anda mungkin menemukan opsi string koneksi lebih mudah diikuti. Sebaiknya gunakan opsi tanpa kata sandi di aplikasi dunia nyata dan lingkungan produksi. Untuk informasi selengkapnya, lihat Autentikasi dan otorisasi.

Prasyarat

Jika Anda baru menggunakan layanan ini, lihat Gambaran umum Service Bus sebelum melakukan panduan memulai cepat ini.

  • Langganan Azure. Untuk menggunakan layanan Azure, termasuk Azure Service Bus, Anda memerlukan langganan. Jika Anda tidak memiliki akun Azure yang sudah ada, Anda dapat mendaftar untuk coba gratis.
  • Visual Studio 2022 atau yang lebih baru. Aplikasi sampel menggunakan fitur baru yang diperkenalkan di C# 10. Anda masih dapat menggunakan pustaka klien Bus Layanan dengan versi bahasa C# sebelumnya, tetapi sintaksnya mungkin bervariasi. Untuk menggunakan sintaks terbaru, kami sarankan Anda menginstal .NET 6.0, atau yang lebih tinggi dan mengatur versi bahasa ke latest. Jika Anda menggunakan Visual Studio, versi sebelum Visual Studio 2022 tidak kompatibel dengan alat yang diperlukan untuk membangun proyek C# 10.

Buat namespace di portal Azure.

Untuk mulai menggunakan entitas pesan Service Bus di Azure, buat namespace dengan nama yang unik dalam lingkungan Azure. Namespace menyediakan wadah cakupan untuk sumber daya Service Bus, seperti antrean dan topik, di aplikasi Anda.

Untuk membuat namespace:

  1. Masuk ke portal Azure.

  2. Pilih menu flyout dari kiri atas dan buka halaman Semua layanan.

  3. Di bilah navigasi kiri, pilih Integrasi.

  4. Gulir ke bawah ke Layanan Pesan, arahkan mouse Anda ke Service Bus, lalu pilih Buat.

    Cuplikan layar memperlihatkan pilihan Buat sumber daya, Integrasi, lalu Bus Layanan di menu.

  5. Di tab Dasar dari halaman Buat namespace layanan, ikuti langkah-langkah berikut:

    1. Untuk Langganan, pilih langganan Azure di mana akan membuat namespace.

    2. Untuk Grup sumber daya, pilih grup sumber daya yang sudah ada, atau buat yang baru.

    3. Masukkan nama namespace yang memenuhi konvensi penamaan berikut:

      • Nama yang Anda pilih harus unik di seluruh Azure. Sistem akan segera memeriksa untuk melihat apakah nama tersebut tersedia.
      • Panjang nama minimal 6 dan maksimal 50 karakter.
      • Nama hanya boleh berisi huruf, angka, dan tanda hubung -.
      • Nama harus dimulai dengan huruf dan diakhiri dengan huruf atau angka.
      • Nama tidak diakhir dengan -sb atau -mgmt.
    4. Untuk Lokasi, pilih wilayah untuk menghosting namespace Anda.

    5. Untuk Tingkat harga, pilih tingkat harga (Dasar, Standar, atau Premium) untuk namespace. Untuk panduan mulai cepat ini, pilih Standar.

      Jika Anda memilih tingkat Premium , Anda dapat mengaktifkan replikasi geografis untuk namespace. Fitur replikasi geografis memastikan bahwa metadata dan data namespace terus direplikasi dari wilayah utama ke satu atau beberapa wilayah sekunder.

      Penting

      Jika Anda ingin menggunakan topik dan langganan, pilih Standar atau Premium. Tingkat harga Dasar tidak mendukung topik dan langganan.

      Jika Anda memilih tingkat harga Premium, tentukan jumlah unit pesan. Tingkat premium menyediakan isolasi sumber daya di tingkat CPU dan memori sehingga setiap beban kerja berjalan dalam isolasi. Kontainer sumber daya ini disebut sebagai unit olahpesan. Namespace premium memiliki setidaknya satu unit pesan. Anda dapat memilih 1, 2, 4, 8, atau 16 unit olahpesan untuk setiap namespace Service Bus Premium. Untuk informasi selengkapnya, lihat Tingkat pesan premium Service Bus.

    6. Pilih Tinjau + buat di bagian bawah halaman.

      Cuplikan layar memperlihatkan halaman Buat namespace.

    7. Pada halaman Tinjau + buat , tinjau pengaturan, dan pilih Buat.

  6. Setelah penyebaran sumber daya berhasil, pilih Buka sumber daya di halaman penyebaran.

    Cuplikan layar memperlihatkan halaman penyebaran berhasil dengan tautan Buka sumber daya.

  7. Anda melihat beranda untuk namespace bus layanan Anda.

    Cuplikan layar memperlihatkan beranda namespace Service Bus yang dibuat.

Membuat topik menggunakan portal Microsoft Azure

  1. Pada halaman Bus Layanan Namespace, perluas Entitas pada menu navigasi di sebelah kiri, dan pilih Topik di menu sebelah kiri.

  2. Pilih + Topik di toolbar.

  3. Masukkan nama untuk topik. Biarkan opsi lain dengan nilai defaultnya.

  4. Pilih Buat.

    Cuplikan layar yang memperlihatkan halaman Buat topik di portal Azure.

Membuat langganan untuk topik tersebut

  1. Pilih topik yang Anda buat di sesi sebelumnya.

    Cuplikan layar yang memperlihatkan pilihan topik dari daftar topik.

  2. Di halaman Topik Bus Layanan, pilih + Langganan di bar alat.

    Cuplikan layar yang memperlihatkan tombol Tambahkan langganan di halaman Topik.

  3. Di halaman Membuat Langganan, ikuti langkah-langkah berikut:

    1. Masukkan S1 untuk nama langganan.

    2. Lalu, pilih Buat untuk membuat langganan.

      Cuplikan layar yang memperlihatkan halaman Buat langganan.

Mengautentikasi aplikasi ke Azure

Artikel ini memperlihatkan kepada Anda dua cara menyambungkan ke Azure Service Bus: tanpa kata sandi dan string koneksi.

Opsi pertama menunjukkan kepada Anda cara menggunakan prinsip keamanan Anda di ID Microsoft Entra dan kontrol akses berbasis peran (RBAC) untuk menyambungkan ke namespace Bus Layanan. Anda tidak perlu khawatir memiliki string koneksi yang dikodekan secara permanen dalam kode Anda, dalam file konfigurasi, atau di penyimpanan aman seperti Azure Key Vault.

Opsi kedua menunjukkan cara menggunakan string koneksi untuk menghubungkan ke namespace Service Bus. Jika Anda baru menggunakan Azure, Anda mungkin menemukan opsi string koneksi lebih mudah diikuti. Sebaiknya gunakan opsi tanpa kata sandi di aplikasi dunia nyata dan lingkungan produksi. Untuk informasi selengkapnya, lihat Autentikasi dan otorisasi Azure Service Bus. Untuk membaca selengkapnya tentang autentikasi tanpa kata sandi, lihat Mengautentikasi aplikasi .NET.

Menetapkan peran ke pengguna Microsoft Entra Anda

Saat Anda mengembangkan secara lokal, pastikan bahwa akun pengguna yang tersambung ke Azure Service Bus memiliki izin yang benar. Anda memerlukan peran Pemilik Data Azure Service Bus untuk mengirim dan menerima pesan. Untuk menetapkan sendiri peran ini, Anda memerlukan peran Administrator Akses Pengguna, atau peran lain yang menyertakan tindakan Microsoft.Authorization/roleAssignments/write.

Anda dapat menetapkan peran Azure RBAC kepada pengguna menggunakan portal Azure, Azure CLI, atau Azure PowerShell. Untuk mempelajari selengkapnya cakupan yang tersedia untuk penetapan peran, lihat Memahami cakupan untuk Azure RBAC.

Contoh berikut menetapkan peran ke Azure Service Bus Data Owner akun pengguna Anda, yang menyediakan akses penuh ke sumber daya Layanan Bus Azure. Dalam skenario nyata, ikuti prinsip hak istimewa paling sedikit untuk memberi pengguna hanya izin minimum yang diperlukan untuk lingkungan produksi yang lebih aman.

Peran Bawaan Azure untuk Azure Service Bus

Untuk Azure Service Bus, pengelolaan namespace dan semua sumber daya terkait melalui portal Microsoft Azure dan AZURE Resource Management API sudah dilindungi menggunakan model Azure RBAC. Azure menyediakan peran bawaan Azure berikut untuk mengotorisasi akses ke namespace Bus Layanan:

  • Pemilik Data Azure Service Bus: Memungkinkan akses data ke namespace Service Bus dan entitasnya, termasuk antrean, topik, langganan, dan filter. Anggota peran ini dapat mengirim dan menerima pesan dari antrean atau topik/langganan.
  • Pengirim Data Azure Service Bus: Gunakan peran ini untuk memberikan send akses ke namespace Service Bus dan entitasnya.
  • Penerima Data Azure Service Bus: Gunakan peran ini untuk memberikan receive akses ke namespace Service Bus dan entitasnya.

Jika Anda ingin membuat peran kustom, lihat Hak yang diperlukan untuk operasi Service Bus.

Menambahkan pengguna Microsoft Entra ke peran Pemilik Bus Layanan Azure

Tambahkan nama pengguna Microsoft Entra Anda ke peran Pemilik Data Azure Service Bus pada tingkat namespace Service Bus. Konfigurasi ini memungkinkan aplikasi yang berjalan dalam konteks akun pengguna Anda untuk mengirim pesan ke antrean atau topik. Ini dapat menerima pesan dari antrean atau langganan topik.

Penting

Dalam kebanyakan kasus, dibutuhkan satu atau dua menit agar penetapan peran disebarluaskan di Azure. Dalam kasus yang jarang terjadi, mungkin perlu waktu hingga delapan menit. Jika Anda menerima kesalahan autentikasi saat pertama kali menjalankan kode, tunggu beberapa saat dan coba lagi.

  1. Jika Anda tidak membuka halaman "Service Bus Namespace" di portal Azure, temukan "namespace" Service Bus Anda menggunakan bilah pencarian utama atau navigasi kiri.

  2. Pada halaman Gambaran Umum , pilih Kontrol akses (IAM) dari menu sebelah kiri.

  3. Di halaman Kontrol akses (IAM), pilih tab Penetapan peran.

  4. Pilih + Tambahkan dari menu atas lalu Tambahkan penetapan peran.

    Cuplikan layar yang menampilkan cara menetapkan peran.

  5. Gunakan kotak pencarian untuk memfilter hasil ke peran yang diinginkan. Untuk contoh ini, cari Azure Service Bus Data Owner dan pilih hasil yang cocok. Kemudian pilih Berikutnya.

  6. Di bagian Tetapkan akses ke, pilih Pengguna, grup, atau perwakilan layanan, lalu pilih + Pilih anggota.

  7. Dalam dialog, cari nama pengguna Microsoft Entra Anda (biasanya alamat email user@domain Anda) lalu pilih Pilih di bagian bawah dialog.

  8. Pilih Tinjau + tetapkan untuk masuk ke halaman akhir, lalu Tinjau + tetapkan lagi untuk menyelesaikan proses.

Luncurkan Visual Studio

Anda dapat mengotorisasi akses ke namespace bus layanan menggunakan langkah-langkah berikut:

  1. Luncurkan Visual Studio. Jika Anda melihat jendela Mulai , pilih tautan Lanjutkan tanpa kode di panel kanan.

  2. Pilih tombol Masuk di kanan atas Visual Studio.

    Cuplikan layar tombol untuk masuk ke Azure menggunakan Visual Studio.

  3. Masuk menggunakan akun Microsoft Entra yang perannya telah Anda tetapkan sebelumnya.

    Cuplikan layar dialog pemilihan akun.

Kirim pesan ke topik tersebut

Bagian ini menunjukkan kepada Anda cara membuat aplikasi konsol .NET untuk mengirim pesan ke topik Bus Layanan.

Catatan

Panduan cepat ini menyediakan instruksi langkah demi langkah untuk menerapkan skenario sederhana mengirimkan sekumpulan pesan ke topik Service Bus dan menerima pesan-pesan tersebut dari langganan topik. Untuk sampel lainnya pada skenario lain dan lanjutan, lihat sampel Azure Service Bus .NET di GitHub.

Membuat aplikasi konsol

  1. Di Visual Studio, pilih Menu File ->Baru ->Proyek .
  2. Pada kotak dialog Buat proyek baru, lakukan langkah-langkah berikut ini: Jika Anda tidak melihat kotak dialog ini, pilih File pada menu, pilih Baru, lalu pilih Proyek.
    1. Pilih C# sebagai bahasa pemrograman.

    2. Pilih Konsol untuk jenis aplikasi.

    3. Pilih Aplikasi Konsol dari daftar hasil.

    4. Kemudian, pilih Berikutnya.

      Cuplikan layar kotak dialog Buat proyek baru dengan C# dan Konsol dipilih.

  3. Masukkan TopicSender untuk nama proyek, ServiceBusTopicQuickStart untuk nama solusi, lalu pilih Berikutnya.
  4. Pada halaman Informasi tambahan, pilih Buat untuk membuat solusi dan proyek.

Menambahkan paket NuGet ke proyek

  1. Pilih Alat>NuGet Package Manager>Package Manager Console dari menu.

  2. Jalankan perintah berikut untuk menginstal paket NuGet Azure.Messaging.ServiceBus .

    Install-Package Azure.Messaging.ServiceBus
    
  3. Jalankan perintah berikut untuk menginstal paket Azure.Identity NuGet.

    Install-Package Azure.Identity
    

Menambahkan kode untuk mengirim pesan ke topik

  1. Ganti konten Program.cs dengan kode berikut. Langkah-langkah penting diuraikan di bagian ini, dengan informasi tambahan dalam komentar kode.

    1. Membuat objek ServiceBusClient menggunakan DefaultAzureCredential objek . DefaultAzureCredential secara otomatis menemukan dan menggunakan kredensial akun Visual Studio Anda untuk mengautentikasi ke Azure Service Bus.
    2. Memanggil metode CreateSender pada objek ServiceBusClient untuk membuat objek ServiceBusSender untuk topik Azure Service Bus yang ditentukan.
    3. Membuat objek ServiceBusMessageBatch menggunakan ServiceBusSender.CreateMessageBatchAsync.
    4. Tambahkan pesan ke batch menggunakan ServiceBusMessageBatch.TryAddMessage.
    5. Mengirimkan sekumpulan pesan ke topik Service Bus menggunakan metode ServiceBusSender.SendMessagesAsync.

    Penting

    Perbarui nilai placeholder (<NAMESPACE-NAME> dan <TOPIC-NAME>) dalam cuplikan kode dengan nama Service Bus namespace dan topik Anda.

    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. Bangun program, dan pastikan tidak ada kesalahan.

  3. Jalankan program dan tunggu pesan konfirmasi.

    A batch of 3 messages has been published to the topic
    

    Penting

    Dalam kebanyakan kasus, dibutuhkan satu atau dua menit agar penetapan peran disebarluaskan di Azure. Dalam kasus yang jarang terjadi, mungkin perlu waktu hingga delapan menit. Jika Anda menerima kesalahan autentikasi saat pertama kali menjalankan kode, tunggu beberapa saat dan coba lagi.

  4. Di portal Microsoft Azure, ikuti langkah-langkah berikut:

    1. Masuk ke namespace Service Bus Anda.

    2. Di halaman Gambaran Umum, di panel tengah bawah, beralih ke tab Topik, dan pilih topik Bus Layanan. Dalam contoh berikut, itu adalah mytopic.

      Cuplikan layar memilih topik.

    3. Di halaman Topik Bus Layanan, Di bagan Pesan di bawah bagian Metrik, Anda bisa melihat ada tiga pesan masuk untuk topik. Jika Anda tidak melihat nilainya, tunggu beberapa menit, dan refresh halaman untuk melihat bagan yang diperbarui.

      Cuplikan layar pesan yang dikirim ke topik tersebut.

    4. Pilih langganan di panel bawah. Dalam contoh berikut, itu adalah S1. Di halaman Langganan Bus Layanan, Anda akan melihat Jumlah pesan aktif sebanyak 3. Langganan telah menerima tiga pesan yang Anda kirim ke topik tersebut, tetapi belum ada penerima yang mengambilnya.

      Cuplikan layar pesan yang diterima di langganan.

Menerima pesan dari langganan

Di bagian ini, Anda membuat aplikasi konsol .NET yang menerima pesan dari langganan ke topik Bus Layanan.

Catatan

Panduan cepat ini menyediakan instruksi langkah demi langkah untuk menerapkan skenario sederhana mengirimkan sekumpulan pesan ke topik Service Bus dan menerima pesan-pesan tersebut dari langganan topik. Untuk sampel lainnya pada skenario lain dan lanjutan, lihat sampel Azure Service Bus .NET di GitHub.

Membuat proyek untuk penerima

  1. Di jendela Penjelajah Solusi, klik kanan solusi ServiceBusTopicQuickStart, arahkan ke Tambahkan, lalu pilih Proyek Baru.
  2. Pilih Aplikasi konsol, lalu pilih Selanjutnya.
  3. Masukkan SubscriptionReceiver untuk Nama proyek, dan pilih Berikutnya.
  4. Di halaman Informasi tambahan, pilih Buat.
  5. Di jendela Penjelajah Solusi, klik kanan SubscriptionReceiver, lalu pilih Atur sebagai Proyek Startup.

Menambahkan paket NuGet ke proyek

  1. Pilih Alat>NuGet Package Manager>Package Manager Console dari menu.

  2. Pilih SubscriptionReceiver untuk daftar drop-down Proyek Default.

  3. Jalankan perintah berikut untuk menginstal paket NuGet Azure.Messaging.ServiceBus .

    Install-Package Azure.Messaging.ServiceBus
    
  4. Jalankan perintah berikut untuk menginstal paket Azure.Identity NuGet.

    Install-Package Azure.Identity
    

Tambahkan kode untuk menerima pesan dari langganan

Di bagian ini, Anda menambahkan kode untuk mengambil pesan dari langganan.

  1. Ganti konten Program.cs yang ada dengan properti dan metode berikut:

    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. Tambahkan kode berikut ke akhir Program.cs.

    Penting

    Perbarui nilai placeholder (<NAMESPACE-NAME>, <TOPIC-NAME>, <SUBSCRIPTION-NAME>) dalam cuplikan kode dengan nama namespace Service Bus, topik, dan langganan Anda.

    Untuk informasi selengkapnya, lihat komentar kode.

    // 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. Berikut adalah tampilan dari Program.cs Anda:

    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. Bangun program, dan pastikan tidak ada kesalahan.

  5. Jalankan aplikasi penerima. Anda akan melihat pesan yang diterima. 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 from subscription: S1
    Received: Message 2 from subscription: S1
    Received: Message 3 from subscription: S1
    
    Stopping the receiver...
    Stopped receiving messages
    
  6. Periksa portal lagi.

    • Di halaman Topik Azure Service Bus, di bagan Pesan, Anda akan melihat tiga pesan masuk dan tiga pesan keluar. Jika Anda tidak melihat jumlah ini, tunggu beberapa menit, lalu refresh halaman untuk melihat bagan yang diperbarui.

      Cuplikan layar pesan yang dikirim dan diterima.

    • Di halaman Langganan Bus Layanan, Anda akan melihat Jumlah pesan aktif sejumlah nol. Itu karena penerima telah menerima pesan dari langganan ini dan menyelesaikan pesan.

      Cuplikan layar jumlah pesan aktif di langganan di akhir.

Lihat dokumentasi dan sampel berikut: