Hızlı Başlangıç: Azure Event Grid ad alanı konusundan (.NET) ileti gönderme ve alma

Bu hızlı başlangıçta aşağıdaki adımları uygulayacaksınız:

  1. Azure portalını kullanarak bir Event Grid ad alanı oluşturun.
  2. Azure portalını kullanarak bir Event Grid ad alanı konusu oluşturun.
  3. Azure portalını kullanarak bir olay aboneliği oluşturun.
  4. Konuya ileti kümesi göndermek için bir .NET konsol uygulaması yazma
  5. Bu iletileri konu başlığından almak için bir .NET konsol uygulaması yazın.

Önemli

Ad alanları, ad alanı konuları ve ad alanı konularıyla ilişkili olay abonelikleri başlangıçta aşağıdaki bölgelerde kullanılabilir:

  • Doğu ABD
  • Orta ABD
  • Orta Güney ABD
  • Batı ABD 2
  • Doğu Asya
  • Güneydoğu Asya
  • Kuzey Avrupa
  • West Europe
  • Kuzey BAE

Not

Bu hızlı başlangıç, bir Event Grid Ad Alanı Konusuna toplu ileti gönderme ve sonra bunları alma gibi basit bir senaryo uygulamaya yönelik adım adım yönergeler sağlar. .NET istemci kitaplığına genel bakış için bkz . .NET için Azure Event Grid istemci kitaplığı. Daha fazla örnek için bkz . GitHub'da Event Grid .NET örnekleri.

Önkoşullar

Hizmette yeniyseniz, bu hızlı başlangıcı gerçekleştirmeden önce bkz . Event Grid'e genel bakış .

  • Azure aboneliği. Azure Event Grid de dahil olmak üzere Azure hizmetlerini kullanmak için bir aboneliğe ihtiyacınız vardır. Mevcut bir Azure hesabınız yoksa ücretsiz deneme sürümüne kaydolabilirsiniz.
  • Visual Studio 2022. Örnek uygulama, C# 10'da tanıtılan yeni özellikleri kullanır. En son söz dizimini kullanmak için .NET 6.0 veya üzerini yüklemenizi ve dil sürümünü olarak latestayarlamanızı öneririz. Visual Studio kullanıyorsanız, Visual Studio 2022 öncesi sürümler C# 10 projeleri oluşturmak için gereken araçlarla uyumlu değildir.

Azure portalında bir ad alanı oluşturma

Azure Event Grid'deki ad alanı, bir veya daha fazla konu, istemci, istemci grubu, konu alanı ve izin bağlaması için mantıksal bir kapsayıcıdır. Aynı Azure bölgesinde birden çok kaynağınız olmasını sağlayan benzersiz bir ad alanı sağlar. Azure Event Grid ad alanıyla artık ilgili kaynakları birlikte gruplandırabilir ve Bunları Azure aboneliğinizde tek bir birim olarak yönetebilirsiniz.

Azure Event Grid ad alanı oluşturmak, görüntülemek ve yönetmek için lütfen sonraki bölümleri izleyin.

Ad alanı oluşturmak için:

  1. Azure portalda oturum açın.

  2. Arama kutusuna Event Grid Ad Alanları yazın ve sonuçlardan Event Grid Ad Alanları'nı seçin.

    Screenshot showing Event Grid Namespaces in the search results.

  3. Event Grid Ad Alanları sayfasında araç çubuğunda + Oluştur'u seçin.

    Screenshot showing Event Grid Namespaces page with the Create button on the toolbar selected.

  4. Temel Bilgiler sayfasında şu adımları izleyin.

    1. Ad alanını oluşturmak istediğiniz Azure aboneliğini seçin.

    2. Mevcut bir kaynak grubunu seçin veya bir kaynak grubu oluşturun.

    3. Ad alanı için bir ad girin.

    4. Ad alanını oluşturmak istediğiniz bölgeyi veya konumu seçin.

    5. Sayfanın alt kısmındaki Gözden geçir ve oluştur'u seçin.

      Screenshot showing the Basics tab of Create namespace page.

  5. Gözden Geçir ve oluştur sekmesinde ayarlarınızı gözden geçirin ve Oluştur'u seçin.

  6. Dağıtım başarılı sayfasında Kaynağa git'i seçerek ad alanınıza gidin.

Ad alanı konusu oluşturma

  1. Event Grid Ad Alanı sayfasında değilseniz, konuyu oluşturmak için kullanmak istediğiniz ad alanını görüntülemek için ad alanlarını oluşturma, görüntüleme ve yönetme adımlarını izleyin.

  2. Event Grid Ad Alanı sayfasında, soldaki menünün Olay bölümünde Konular seçeneğini belirleyin.

  3. Konular sayfasında, komut çubuğunda + Konu düğmesini seçin.

    Screenshot showing Event Grid namespace topic creation.

  4. Konu Oluştur sayfasında, oluşturmak istediğiniz konunun adını yazın ve Oluştur'u seçin.

    Screenshot showing Event Grid namespace topic creation basics.

Olay aboneliği oluşturma

  1. Azure portalında Event Grid ad alanınızın Konular sayfasındaysanız konu başlığı listesinden konunuzu seçin. Konular sayfasındaysanız, olay aboneliğini oluşturmak için kullanmak istediğiniz konuyu tanımlamak için ad alanı konularını oluşturma, görüntüleme ve yönetme yönergelerini izleyin.

  2. Olay Girişi Ad Alanı Konusu sayfasında, soldaki menünün Varlıklar bölümünde Abonelikler seçeneğini belirleyin.

  3. Abonelikler sayfasında, komut çubuğunda "+ Abonelik" düğmesini seçin.

    Screenshot showing Event Grid event subscription create.

  4. Temel Bilgiler sekmesinde, oluşturmak istediğiniz konunun adını yazın ve ardından sayfanın en altındaki İleri: Filtreler'i seçin.

    Screenshot showing Event Grid event subscription create basics.

  5. Filtreler sekmesinde, abonelikte filtrelemek istediğiniz olay türlerinin adlarını ekleyin ve abonelikte kullanmak istediğiniz bağlam özniteliği filtrelerini ekleyin. Ardından, sayfanın en altındaki İleri: Ek özellikler'i seçin.

    Screenshot showing Event Grid event subscription create filters.

  6. Ek özellikler sekmesinde olay saklama, maksimum teslim sayısı, kilit süresi ve teslim edilmeyen mektup ayarlarını belirtebilirsiniz.

    Screenshot showing Event Grid event subscription create additional features.

  7. Olay aboneliğini oluşturmak için Oluştur'u seçin.

Azure'da uygulamanın kimliğini doğrulama

Bu hızlı başlangıç, Azure Event Grid: bağlantı dizesi'e bağlanma yollarını gösterir.

Bu belgede, event grid ad alanına bağlanmak için bağlantı dizesi nasıl kullanılacağı gösterilmektedir. Azure'da yeniyseniz bağlantı dizesi seçeneğini daha kolay takip edebilirsiniz.

Yeni bir Event Grid ad alanı oluşturmak, her birinin ad alanı veya konuların tüm yönleri üzerinde tam denetim sağlayan bir ilk birincil ve ikincil anahtarı otomatik olarak oluşturur.

İstemci, Event Grid ad alanına bağlanmak için bağlantı dizesi kullanabilir. Ad alanı konunuzun erişim anahtarlarını kopyalamak için şu adımları izleyin:

  1. Event Grid Ad Alanı sayfasında Konular'ı seçin.
  2. Erişmeniz gereken konuyu seçin.
  3. Erişim anahtarları sayfasında Anahtar 1 veya Anahtar 2'nin yanındaki kopyala düğmesini seçerek erişim anahtarlarını daha sonra kullanmak üzere panonuza kopyalayın. Bu değeri Not Defteri veya başka bir geçici konuma yapıştırın.

Visual Studio'yu başlatma

Event Grid ad alanına erişimi yetkilendirmek için aşağıdaki adımları kullanabilirsiniz:

Visual Studio’yu başlatın. Başlarken penceresini görüyorsanız, sağ bölmedeki Kod olmadan devam et bağlantısını seçin.

Konuya ileti gönderme

Bu bölümde, Event Grid konusuna ileti göndermek için bir .NET konsol uygulamasının nasıl oluşturulacağı gösterilmektedir.

Konsol uygulaması oluşturma

  1. Visual Studio'da Dosya -Yeni ->>Proje menüsü'ne tıklayın.

  2. Yeni proje oluştur iletişim kutusunda aşağıdaki adımları uygulayın: Bu iletişim kutusunu görmüyorsanız, menüden Dosya'yı seçin, Yeni'yi ve ardından Proje'yi seçin.

    1. Programlama dili için C# öğesini seçin.

    2. Uygulamanın türü için Konsol'a tıklayın.

    3. Sonuçlar listesinden Konsol Uygulaması'nı seçin.

    4. Ardından İleri'yi seçin.

      Screenshot showing the Create a new project dialog box with C# and Console selected.

  3. Proje adı için EventSender, çözüm adı için EventGridQuickStart girin ve İleri'yi seçin.

    Screenshot showing the solution and project names in the Configure your new project dialog box.

  4. Ek bilgiler sayfasında Oluştur'u seçerek çözümü ve projeyi oluşturun.

NuGet paketlerini projeye ekleme

  1. Menüden Araçlar>NuGet Paket Yöneticisi> Paket Yöneticisi Konsolu'nu seçin.

  2. Azure.Messaging.EventGrid NuGet paketini yüklemek için aşağıdaki komutu çalıştırın:

    Install-Package Azure.Messaging.EventGrid -version 4.22.0-beta.1
    

Ad alanı konusuna olay göndermek için kod ekleme

  1. öğesinin içeriğini Program.cs aşağıdaki kodla değiştirin. Önemli adımlar, kod açıklamalarında ek bilgilerle özetlenmiştir.

    Önemli

    Kod parçacığındaki yer tutucu değerlerini (<ENDPOINT> , <TOPIC-NAME>, <TOPIC-ACCESS-KEY>, ), <TOPIC-SUBSCRIPTION-NAME>konu uç noktanızla, konu adınızla, konu anahtarınızla, konunun abonelik adıyla güncelleştirin.

    using Azure.Messaging;
    using Azure;
    using Azure.Messaging.EventGrid.Namespaces;    
    
    // TODO: Replace the <ENDPOINT> , <TOPIC-KEY> and <TOPIC-NAME> placeholder
    
    var topicEndpoint = "<TOPIC-ENDPOINT>"; // Should be in the form: https://namespace01.eastus-1.eventgrid.azure.net. 
    var topicKey = "<TOPIC-ACCESS-KEY>";
    var topicName = "<TOPIC-NAME>";
    var subscription = "<TOPIC-SUBSCRIPTION-NAME>";
    
    // Construct the client using an Endpoint for a namespace as well as the access key
    var client = new EventGridClient(new Uri(topicEndpoint), 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.PublishCloudEventAsync(topicName, ev);
    
    // Publish a batch of CloudEvents.
    
    await client.PublishCloudEventsAsync(
    topicName,
    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. Projeyi derleyin ve hata olmadığından emin olun.

  3. Programı çalıştırın ve onay iletisini bekleyin.

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

    Önemli

    Çoğu durumda rol atamasının Azure'a yayılması bir veya iki dakika sürer. Nadir durumlarda, sekiz dakikaya kadar sürebilir. Kodunuzu ilk kez çalıştırdığınızda kimlik doğrulama hataları alıyorsanız, birkaç dakika bekleyin ve yeniden deneyin.

  4. Azure portalında şu adımları izleyin:

    1. Event Grid ad alanınıza gidin.

    2. Genel Bakış sayfasında, grafikte ad alanına gönderilen olayların sayısını görürsünüz.

      Screenshot showing the Event Grid Namespace page in the Azure portal.

Konu başlığından iletileri çekme

Bu bölümde, konu başlığından iletiler alan bir .NET konsol uygulaması oluşturacaksınız.

Yayımlanan CloudEvents'i almak için proje oluşturma

  1. Çözüm Gezgini penceresinde EventGridQuickStart çözümüne sağ tıklayın, Ekle'nin üzerine gelin ve Yeni Proje'yi seçin.
  2. Konsol uygulaması'yı ve ardından İleri'yi seçin.
  3. Proje adı olarak EventReceiver girin ve Oluştur'u seçin.
  4. Çözüm Gezgini penceresinde EventReceiver'a sağ tıklayın ve Başlangıç Projesi Olarak Ayarla'yı seçin.

NuGet paketlerini projeye ekleme

  1. Menüden Araçlar>NuGet Paket Yöneticisi> Paket Yöneticisi Konsolu'nu seçin.

  2. Azure.Messaging.EventGrid NuGet paketini yüklemek için aşağıdaki komutu çalıştırın. Varsayılan proje henüz ayarlanmadıysa EventReceiver öğesini seçin.

    Install-Package Azure.Messaging.EventGrid -version 4.22.0-beta.1
    

    Screenshot showing EventReceiver project selected in the Package Manager Console.

Konu başlığından olayları almak için kodu ekleme

Bu bölümde, kuyruktan iletileri almak için kod ekleyebilirsiniz.

  1. sınıfına Program aşağıdaki kodu ekleyin:

    Önemli

    Kod parçacığındaki yer tutucu değerlerini (<ENDPOINT> , <TOPIC-NAME>, <TOPIC-ACCESS-KEY>, ), <TOPIC-SUBSCRIPTION-NAME>konu uç noktanızla, konu adınızla, konu anahtarınızla, konunun abonelik adıyla güncelleştirin.

    using Azure;
    using Azure.Messaging;
    using Azure.Messaging.EventGrid.Namespaces;
    
    var topicEndpoint = "<TOPIC-ENDPOINT>"; // Should be in the form: https://namespace01.eastus-1.eventgrid.azure.net. 
    var topicKey = "<TOPIC-ACCESS-KEY>";
    var topicName = "<TOPIC-NAME>";
    var subscription = "<TOPIC-SUBSCRIPTION-NAME>";
    
    // Construct the client using an Endpoint for a namespace as well as the access key
    var client = new EventGridClient(new Uri(topicEndpoint), new AzureKeyCredential(topicKey));
    
    // Receive the published CloudEvents
    ReceiveResult result = await client.ReceiveCloudEventsAsync(topicName, subscription, 3);
    
    Console.WriteLine("Received Response");
    Console.WriteLine("-----------------");
    
    
  2. Aşağıdaki yöntemleri sınıfın Program sonuna ekleyin.

    // 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.Value)
    {
        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.ReleaseCloudEventsAsync(topicName, subscription, new ReleaseOptions(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.AcknowledgeCloudEventsAsync(topicName, subscription, new AcknowledgeOptions(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.RejectCloudEventsAsync(topicName, subscription, new RejectOptions(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; }
    }    
    

Kaynakları temizleme

Azure portalında Event Grid ad alanınıza gidin ve Azure portalında Sil'i seçerek Event Grid ad alanını ve içindeki konuyu silin.

Bkz. .NET API başvurusu.