Bagikan melalui


Mulai cepat: Mengirim dan menerima pesan dari topik namespace Azure Event Grid (.NET)

Di tutorial mulai cepat ini, Anda akan melakukan langkah-langkah berikut:

  1. Buat namespace Layanan Event Grid, menggunakan portal Azure.
  2. Buat topik namespace Layanan Event Grid, menggunakan portal Azure.
  3. Buat langganan peristiwa, menggunakan portal Azure.
  4. Menulis aplikasi konsol .NET untuk mengirim sekumpulan pesan ke topik
  5. Tulis aplikasi konsol .NET untuk menerima pesan tersebut dari topik.

Catatan

Mulai cepat ini menyediakan instruksi langkah demi langkah untuk menerapkan skenario sederhana mengirim batch pesan ke Topik Namespace Event Grid lalu menerimanya. Untuk gambaran umum pustaka klien .NET, lihat Pustaka klien Azure Event Grid untuk .NET. Untuk sampel lainnya, lihat Sampel .NET Event Grid di GitHub.

Prasyarat

Jika Anda baru menggunakan layanan ini, lihat Gambaran umum Event Grid sebelum Anda melakukan mulai cepat ini.

  • Langganan Azure. Untuk menggunakan layanan Azure, termasuk Azure Event Grid, Anda memerlukan langganan. Jika Anda tidak memiliki akun Azure yang sudah ada, Anda dapat mendaftar untuk coba gratis.
  • Visual Studio 2022. Aplikasi sampel menggunakan fitur baru yang diperkenalkan di C# 10. 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.

Membuat namespace layanan di portal Microsoft Azure

Namespace layanan di Azure Event Grid adalah kontainer logis untuk satu atau beberapa topik, klien, grup klien, ruang topik, dan pengikatan izin. Ini menyediakan namespace layanan yang unik, memungkinkan Anda memiliki beberapa sumber daya di wilayah Azure yang sama. Dengan namespace Azure Event Grid, Anda dapat mengelompokkan sekarang bersama sumber daya terkait dan mengelolanya sebagai satu unit di langganan Azure Anda.

Silakan ikuti bagian berikutnya untuk membuat, melihat, dan mengelola namespace Azure Event Grid.

Untuk membuat namespace layanan:

  1. Masuk ke portal Microsoft Azure.

  2. Dalam kotak pencarian, masukkan Namespace Layanan Event Grid dan pilih Namespace Layanan Event Grid dari hasil.

    Cuplikan layar memperlihatkan Namespace Layanan Event Grid di hasil pencarian.

  3. Pada halaman Namespace Layanan Event Grid, pilih + Buat pada toolbar.

    Cuplikan layar memperlihatkan halaman Namespace Layanan Event Grid dengan tombol Buat pada toolbar dipilih.

  4. Pada halaman Dasar , ikuti langkah-langkah ini.

    1. Pilih langganan Azure tempat Anda ingin membuat namespace layanan.

    2. Pilih grup sumber daya yang ada atau buat grup sumber daya.

    3. Masukkan nama untuk kumpulan nama.

    4. Pilih wilayah atau lokasi tempat Anda ingin membuat namespace layanan.

    5. Pilih Tinjau + buat di bagian bawah halaman.

      Cuplikan layar memperlihatkan tab Dasar dari halaman Buat namespace layanan.

  5. Pada tab Tinjau + buat , tinjau pengaturan Anda dan pilih Buat.

  6. Pada halaman Penyebaran berhasil , pilih Buka sumber daya untuk menavigasi ke namespace Anda.

Membuat topik namespace layanan

  1. Jika Anda tidak berada di halaman Namespace Layanan Event Grid, ikuti langkah-langkah membuat, melihat, dan mengelola namespace layanan untuk melihat namespace yang ingin Anda gunakan untuk membuat topik.

  2. Pada halaman Namespace Layanan Event Grid, pilih opsi Topik di bagian Acara di menu sebelah kiri.

  3. Pada halaman Topik , pilih tombol + Topik pada bilah perintah.

    Cuplikan layar memperlihatkan pembuatan topik namespace Layanan Event Grid.

  4. Pada halaman Buat Topik , ketik nama topik yang ingin Anda buat dan pilih Buat.

    Cuplikan layar memperlihatkan dasar-dasar pembuatan topik namespace Layanan Event Grid.

Membuat langganan peristiwa

  1. Jika Anda berada di halaman Topik namespace Layanan Event Grid Anda di portal Azure, pilih topik Anda dari daftar topik. Jika Anda berada di halaman Topik , ikuti instruksi dari membuat, menampilkan, dan mengelola topik namespace untuk mengidentifikasi topik yang ingin Anda gunakan untuk membuat langganan peristiwa.

    Cuplikan layar memperlihatkan halaman topik Event Grid dengan topik dipilih.

  2. Pada halaman Topik Namespace Layanan Gird Peristiwa, pilih opsi Langganan di bagian Entitas di menu sebelah kiri.

  3. Pada halaman Langganan , pilih tombol "+ Langganan" pada bilah perintah.

    Cuplikan layar memperlihatkan pembuatan langganan peristiwa Event Grid.

  4. Di tab Dasar , ikuti langkah-langkah berikut:

    1. Masukkan nama untuk langganan yang ingin Anda buat

    2. Konfirmasikan bahwa skema pengiriman diatur Cloud Events v1.0.

    3. Konfirmasikan bahwa mode pengiriman diatur ke Antrean (mode penarikan).

    4. Pilih Berikutnya: Filter di bagian bawah halaman.

      Cuplikan layar memperlihatkan langganan peristiwa Event Grid membuat dasar-dasar.

  5. Di tab Filter , tambahkan nama jenis peristiwa yang ingin Anda filter dalam langganan dan tambahkan filter atribut konteks yang ingin Anda gunakan dalam langganan. Lalu, pilih Berikutnya: Fitur tambahan di bagian bawah halaman.

    Cuplikan layar memperlihatkan langganan peristiwa Event Grid membuat filter.

  6. Di tab Fitur tambahan, Anda dapat menentukan retensi peristiwa, jumlah pengiriman maksimum, durasi kunci, dan pengaturan dead-lettering.

    Cuplikan layar memperlihatkan langganan peristiwa Event Grid membuat fitur tambahan.

  7. Pilih Buat untuk membuat langganan peristiwa.

Mengautentikasi aplikasi ke Azure

Mulai cepat ini menunjukkan cara menyambungkan ke Azure Event Grid: string koneksi. Bagian ini memperlihatkan kepada Anda cara menggunakan string koneksi untuk menyambungkan ke namespace Layanan Event Grid. Jika Anda baru menggunakan Azure, opsi string koneksi lebih mudah diikuti. Membuat namespace layanan Event Grid baru secara otomatis menghasilkan kunci primer dan sekunder awal yang masing-masing memberikan kontrol penuh atas semua aspek namespace layanan atau topik. Klien dapat menggunakan string koneksi untuk menyambungkan ke namespace Layanan Event Grid. Untuk menyalin kunci akses untuk topik namespace Anda, ikuti langkah-langkah berikut:

  1. Pada halaman Namespace Layanan Event Grid, pilih Topik.

  2. Pilih topik yang perlu Anda akses.

  3. Pada halaman Kunci akses, pilih tombol salin di samping Kunci 1 atau Kunci 2, untuk menyalin kunci akses ke clipboard Anda untuk digunakan nanti. Tempelkan nilai ini ke Notepad atau beberapa lokasi sementara lainnya.

    Cuplikan layar yang memperlihatkan kunci akses untuk topik Event Grid.

Luncurkan Visual Studio

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

Kirim pesan ke topik tersebut

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

Membuat aplikasi konsol lokal

  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. Untuk C# untuk bahasa pemrograman.

    2. Pilih Konsol untuk jenis aplikasi.

    3. Pilih Aplikasi Konsol dari daftar hasil.

    4. Kemudian, pilih Berikutnya.

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

  3. Masukkan EventSender untuk nama proyek, EventGridQuickStart untuk nama solusi, lalu pilih Berikutnya.

    Cuplikan layar memperlihatkan solusi dan nama proyek dalam kotak dialog Konfigurasikan proyek baru Anda.

  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.EventGrid :

    Install-Package Azure.Messaging.EventGrid.Namespaces
    

Menambahkan kode untuk mengirim peristiwa ke topik namespace layanan

  1. Ganti isi Program.cs dengan kode berikut. Langkah-langkah penting diuraikan, dengan informasi tambahan dalam komentar kode.

    Penting

    Perbarui nilai tempat penampung ( ,<NAMESPACE-ENDPOINT> , <TOPIC-NAME><TOPIC-ACCESS-KEY>, ) <TOPIC-SUBSCRIPTION-NAME>dalam cuplikan kode dengan titik akhir namespace, nama topik, dan kunci topik Anda.

    using Azure.Messaging;
    using Azure;
    using Azure.Messaging.EventGrid.Namespaces;
    
    
    // TODO: Replace the following placeholders with appropriate values
    
    // Endpoint of the namespace that you can find on the Overview page for your Event Grid namespace. Prefix it with https://.
    // Should be in the form: https://namespace01.eastus-1.eventgrid.azure.net. 
    var namespaceEndpoint = "<NAMESPACE-ENDPOINT>";
    
    // Name of the topic in the namespace
    var topicName = "<TOPIC-NAME>";
    
    // Access key for the topic
    var topicKey = "<TOPIC-ACCESS-KEY>";
    
    // Construct the client using an Endpoint for a namespace as well as the access key
    var client = new EventGridSenderClient(new Uri(namespaceEndpoint), topicName, new AzureKeyCredential(topicKey));
    
    // Publish a single CloudEvent using a custom TestModel for the event data.
    var @ev = new CloudEvent("employee_source", "type", new TestModel { Name = "Bob", Age = 18 });
    await client.SendAsync(ev);
    
    // Publish a batch of CloudEvents.
    
    await client.SendAsync(
    new[] {
        new CloudEvent("employee_source", "type", new TestModel { Name = "Tom", Age = 55 }),
        new CloudEvent("employee_source", "type", new TestModel { Name = "Alice", Age = 25 })});
    
    Console.WriteLine("Three events have been published to the topic. Press any key to end the application.");
    Console.ReadKey();
    
    public class TestModel
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
    
    
  2. Bangun program, dan pastikan tidak ada kesalahan.

  3. Jalankan program dan tunggu pesan konfirmasi.

    Three events have been published to the topic. Press any key to end the application.
    

    Penting

    Dalam kebanyakan kasus, akan memakan waktu 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. Navigasikan ke namespace Layanan Event Grid Anda.

    2. Pada halaman Gambaran Umum , Anda akan melihat jumlah peristiwa yang diposting ke namespace di bagan.

      Cuplikan layar memperlihatkan halaman Namespace Layanan Event Grid di portal Azure.

Menarik pesan dari topik

Di bagian ini, Anda membuat aplikasi konsol .NET yang menerima pesan dari topik tersebut.

Membuat proyek untuk menerima CloudEvents yang diterbitkan

  1. Di jendela Penjelajah Solusi, klik kanan solusi EventGridQuickStart, arahkan ke Tambahkan, dan pilih Proyek Baru.
  2. Pilih Aplikasi konsol, lalu pilih Selanjutnya.
  3. Masukkan EventReceiver untuk Nama proyek, dan pilih Buat.
  4. Di jendela Penjelajah Solusi, klik kanan EventReceiver, dan pilih Atur sebagai Proyek Startup.

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.EventGrid . Pilih EventReceiver untuk proyek Default jika belum diatur.

    Install-Package Azure.Messaging.EventGrid.Namespaces
    

    Cuplikan layar memperlihatkan proyek EventReceiver dipilih di Konsol Manajer Paket.

Menambahkan kode untuk menerima peristiwa dari topik

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

  1. Program Dalam kelas , tambahkan kode berikut:

    Penting

    Perbarui nilai tempat penampung (<NAMESPACE-ENDPOINT> , , <TOPIC-NAME><TOPIC-ACCESS-KEY>, , <TOPIC-SUBSCRIPTION-NAME>) dalam cuplikan kode dengan titik akhir namespace, nama topik, kunci topik, nama langganan topik Anda.

    using Azure;
    using Azure.Messaging;
    using Azure.Messaging.EventGrid.Namespaces;
    
    // TODO: Replace the following placeholders with appropriate values
    
    // Endpoint of the namespace that you can find on the Overview page for your Event Grid namespace
    // Example: https://namespace01.eastus-1.eventgrid.azure.net. 
    var namespaceEndpoint = "<NAMESPACE-ENDPOINT>"; // Should be in the form: https://namespace01.eastus-1.eventgrid.azure.net. 
    
    // Name of the topic in the namespace
    var topicName = "<TOPIC-NAME>";
    
    // Access key for the topic
    var topicKey = "<TOPIC-ACCESS-KEY>";
    
    // Name of the subscription to the topic
    var subscriptionName = "<TOPIC-SUBSCRIPTION-NAME>";
    
    // Maximum number of events you want to receive
    const short MaxEventCount = 3;
    
    // Construct the client using an Endpoint for a namespace as well as the access key
    var client = new EventGridReceiverClient(new Uri(namespaceEndpoint), topicName, subscriptionName, new AzureKeyCredential(topicKey));
    
    // Receive the published CloudEvents. 
    ReceiveResult result = await client.ReceiveAsync(MaxEventCount);
    
    Console.WriteLine("Received Response");
    Console.WriteLine("-----------------");
    
    
  2. Tambahkan metode berikut ke akhir Program kelas.

    // handle received messages. Define these variables on the top.
    
    var toRelease = new List<string>();
    var toAcknowledge = new List<string>();
    var toReject = new List<string>();
    
    // Iterate through the results and collect the lock tokens for events we want to release/acknowledge/result
    
    foreach (ReceiveDetails detail in result.Details)
    {
        CloudEvent @event = detail.Event;
        BrokerProperties brokerProperties = detail.BrokerProperties;
        Console.WriteLine(@event.Data.ToString());
    
        // The lock token is used to acknowledge, reject or release the event
        Console.WriteLine(brokerProperties.LockToken);
        Console.WriteLine();
    
        // If the event is from the "employee_source" and the name is "Bob", we are not able to acknowledge it yet, so we release it
        if (@event.Source == "employee_source" && @event.Data.ToObjectFromJson<TestModel>().Name == "Bob")
        {
            toRelease.Add(brokerProperties.LockToken);
        }
        // acknowledge other employee_source events
        else if (@event.Source == "employee_source")
        {
            toAcknowledge.Add(brokerProperties.LockToken);
        }
        // reject all other events
        else
        {
            toReject.Add(brokerProperties.LockToken);
        }
    }
    
    // Release/acknowledge/reject the events
    
    if (toRelease.Count > 0)
    {
        ReleaseResult releaseResult = await client.ReleaseAsync(toRelease);
    
        // Inspect the Release result
        Console.WriteLine($"Failed count for Release: {releaseResult.FailedLockTokens.Count}");
        foreach (FailedLockToken failedLockToken in releaseResult.FailedLockTokens)
        {
            Console.WriteLine($"Lock Token: {failedLockToken.LockToken}");
            Console.WriteLine($"Error Code: {failedLockToken.Error}");
            Console.WriteLine($"Error Description: {failedLockToken.ToString}");
        }
    
        Console.WriteLine($"Success count for Release: {releaseResult.SucceededLockTokens.Count}");
        foreach (string lockToken in releaseResult.SucceededLockTokens)
        {
            Console.WriteLine($"Lock Token: {lockToken}");
        }
        Console.WriteLine();
    }
    
    if (toAcknowledge.Count > 0)
    {
        AcknowledgeResult acknowledgeResult = await client.AcknowledgeAsync(toAcknowledge);
    
        // Inspect the Acknowledge result
        Console.WriteLine($"Failed count for Acknowledge: {acknowledgeResult.FailedLockTokens.Count}");
        foreach (FailedLockToken failedLockToken in acknowledgeResult.FailedLockTokens)
        {
            Console.WriteLine($"Lock Token: {failedLockToken.LockToken}");
            Console.WriteLine($"Error Code: {failedLockToken.Error}");
            Console.WriteLine($"Error Description: {failedLockToken.ToString}");
        }
    
        Console.WriteLine($"Success count for Acknowledge: {acknowledgeResult.SucceededLockTokens.Count}");
        foreach (string lockToken in acknowledgeResult.SucceededLockTokens)
        {
            Console.WriteLine($"Lock Token: {lockToken}");
        }
        Console.WriteLine();
    }
    
    if (toReject.Count > 0)
    {
        RejectResult rejectResult = await client.RejectAsync(toReject);
    
        // Inspect the Reject result
        Console.WriteLine($"Failed count for Reject: {rejectResult.FailedLockTokens.Count}");
        foreach (FailedLockToken failedLockToken in rejectResult.FailedLockTokens)
        {
            Console.WriteLine($"Lock Token: {failedLockToken.LockToken}");
            Console.WriteLine($"Error Code: {failedLockToken.Error}");
            Console.WriteLine($"Error Description: {failedLockToken.ToString}");
        }
    
        Console.WriteLine($"Success count for Reject: {rejectResult.SucceededLockTokens.Count}");
        foreach (string lockToken in rejectResult.SucceededLockTokens)
        {
            Console.WriteLine($"Lock Token: {lockToken}");
        }
        Console.WriteLine();
    }
    
    public class TestModel
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }    
    
    
  3. Di jendela Penjelajah Solusi, klik kanan proyek EventReceiver, dan pilih Atur sebagai proyek Startup.

  4. Bangun program, dan pastikan tidak ada kesalahan.

  5. Jalankan aplikasi EventReceiver dan konfirmasi Anda melihat tiga peristiwa di jendela output.

    Cuplikan layar memperlihatkan output dari aplikasi Penerima.

Membersihkan sumber daya

Navigasi ke namespace Layanan Event Grid Anda di portal Azure, dan pilih Hapus di portal Azure untuk menghapus namespace Layanan Event Grid dan topik di dalamnya.

Lihat referensi .NET API.