Udostępnij za pośrednictwem


Szybki start: wysyłanie i odbieranie komunikatów z tematu przestrzeni nazw usługi Azure Event Grid (.NET)

W tym przewodniku Szybki start wykonasz następujące czynności:

  1. Utwórz przestrzeń nazw usługi Event Grid przy użyciu witryny Azure Portal.
  2. Utwórz temat przestrzeni nazw usługi Event Grid przy użyciu witryny Azure Portal.
  3. Utwórz subskrypcję zdarzeń przy użyciu witryny Azure Portal.
  4. Pisanie aplikacji konsolowej .NET w celu wysyłania zestawu komunikatów do tematu
  5. Napisz aplikację konsolową platformy .NET, aby otrzymywać te komunikaty z tematu.

Uwaga

Ten przewodnik Szybki start zawiera instrukcje krok po kroku dotyczące implementowania prostego scenariusza wysyłania partii komunikatów do tematu przestrzeni nazw usługi Event Grid, a następnie odbierania ich. Aby zapoznać się z omówieniem biblioteki klienta platformy .NET, zobacz Biblioteka klienta usługi Azure Event Grid dla platformy .NET. Aby uzyskać więcej przykładów, zobacz Przykłady dla platformy .NET usługi Event Grid w witrynie GitHub.

Wymagania wstępne

Jeśli dopiero zaczynasz korzystać z usługi, zobacz Omówienie usługi Event Grid przed wykonaniem tego przewodnika Szybki start.

  • Subskrypcja platformy Azure. Do korzystania z usług platformy Azure, w tym usługi Azure Event Grid, potrzebna jest subskrypcja. Jeśli nie masz istniejącego konta platformy Azure, możesz utworzyć konto bezpłatnej wersji próbnej.
  • Visual Studio 2022. Przykładowa aplikacja korzysta z nowych funkcji, które zostały wprowadzone w języku C# 10. Aby użyć najnowszej składni, zalecamy zainstalowanie programu .NET 6.0 lub nowszego i ustawienie wersji językowej na latest. Jeśli używasz programu Visual Studio, wersje przed programem Visual Studio 2022 nie są zgodne z narzędziami wymaganymi do kompilowania projektów języka C# 10.

Tworzenie przestrzeni nazw w witrynie Azure Portal

Przestrzeń nazw w usłudze Azure Event Grid jest kontenerem logicznym dla co najmniej jednego tematu, klientów, grup klientów, przestrzeni tematów i powiązań uprawnień. Zapewnia on unikatową przestrzeń nazw, umożliwiając posiadanie wielu zasobów w tym samym regionie świadczenia usługi Azure. Dzięki przestrzeni nazw usługi Azure Event Grid możesz teraz grupować powiązane zasoby i zarządzać nimi jako pojedynczą jednostką w ramach subskrypcji platformy Azure.

Postępuj zgodnie z kolejnymi sekcjami, aby utworzyć przestrzeń nazw usługi Azure Event Grid i zarządzać nią.

Aby utworzyć przestrzeń nazw:

  1. Zaloguj się w witrynie Azure Portal.

  2. W polu wyszukiwania wpisz Event Grid Namespaces (Przestrzenie nazw usługi Event Grid) i wybierz pozycję Event Grid Namespaces (Przestrzenie nazw usługi Event Grid) z wyników.

    Zrzut ekranu przedstawiający przestrzenie nazw usługi Event Grid w wynikach wyszukiwania.

  3. Na stronie Przestrzenie nazw usługi Event Grid wybierz pozycję + Utwórz na pasku narzędzi.

    Zrzut ekranu przedstawiający stronę Przestrzenie nazw usługi Event Grid z wybranym przyciskiem Utwórz na pasku narzędzi.

  4. Na stronie Podstawy wykonaj następujące kroki.

    1. Wybierz subskrypcję platformy Azure, w której chcesz utworzyć przestrzeń nazw.

    2. Wybierz istniejącą grupę zasobów lub utwórz grupę zasobów.

    3. Wprowadź nazwę przestrzeni nazw.

    4. Wybierz region lub lokalizację , w której chcesz utworzyć przestrzeń nazw.

    5. Wybierz pozycję Przejrzyj i utwórz w dolnej części strony.

      Zrzut ekranu przedstawiający kartę Podstawowe na stronie Tworzenie przestrzeni nazw.

  5. Na karcie Przeglądanie + tworzenie przejrzyj ustawienia i wybierz pozycję Utwórz.

  6. Na stronie Wdrożenie powiodło się wybierz pozycję Przejdź do zasobu, aby przejść do przestrzeni nazw.

Tworzenie tematu przestrzeni nazw

  1. Jeśli nie jesteś na stronie Przestrzeni nazw usługi Event Grid, wykonaj kroki tworzenia, wyświetlania przestrzeni nazw i zarządzania nimi, aby wyświetlić przestrzeń nazw , której chcesz użyć do utworzenia tematu.

  2. Na stronie Przestrzeń nazw usługi Event Grid wybierz opcję Tematy w sekcji Broker zdarzeń w menu po lewej stronie.

  3. Na stronie Tematy wybierz przycisk + Temat na pasku poleceń.

    Zrzut ekranu przedstawiający tworzenie tematu przestrzeni nazw usługi Event Grid.

  4. Na stronie Tworzenie tematu wpisz nazwę tematu, który chcesz utworzyć, a następnie wybierz pozycję Utwórz.

    Zrzut ekranu przedstawiający podstawy tworzenia tematu przestrzeni nazw usługi Event Grid.

Tworzenie subskrypcji zdarzeń

  1. Jeśli jesteś na stronie Tematy przestrzeni nazw usługi Event Grid w witrynie Azure Portal, wybierz temat z listy tematów. Jeśli jesteś na stronie Tematy , postępuj zgodnie z instrukcjami z tworzenia, wyświetlania i zarządzania tematami przestrzeni nazw, aby zidentyfikować temat, którego chcesz użyć do utworzenia subskrypcji zdarzeń.

    Zrzut ekranu przedstawiający stronę tematów usługi Event Grid z wybranym tematem.

  2. Na stronie Temat obszaru nazw gird zdarzeń wybierz opcję Subskrypcje w sekcji Jednostki w menu po lewej stronie.

  3. Na stronie Subskrypcje wybierz przycisk "+ Subskrypcja" na pasku poleceń.

    Zrzut ekranu przedstawiający tworzenie subskrypcji zdarzeń usługi Event Grid.

  4. Na karcie Podstawy wykonaj następujące kroki:

    1. Wprowadź nazwę subskrypcji, którą chcesz utworzyć

    2. Upewnij się, że schemat dostarczania jest ustawiony na zdarzenia w chmurze w wersji 1.0.

    3. Upewnij się, że tryb dostarczania jest ustawiony na Kolejka (tryb ściągania).

    4. Wybierz pozycję Dalej: filtry w dolnej części strony.

      Zrzut ekranu przedstawiający tworzenie podstaw subskrypcji zdarzeń usługi Event Grid.

  5. Na karcie Filtry dodaj nazwy typów zdarzeń, które chcesz filtrować w subskrypcji, i dodaj filtry atrybutów kontekstu, których chcesz użyć w subskrypcji. Następnie wybierz pozycję Dalej: dodatkowe funkcje w dolnej części strony.

    Zrzut ekranu przedstawiający filtry tworzenia subskrypcji zdarzeń usługi Event Grid.

  6. Na karcie Dodatkowe funkcje można określić ustawienia przechowywania zdarzeń, maksymalnej liczby dostarczania, czasu trwania blokady i utraconych komunikatów.

    Zrzut ekranu przedstawiający subskrypcję zdarzeń usługi Event Grid, która tworzy dodatkowe funkcje.

  7. Wybierz pozycję Utwórz , aby utworzyć subskrypcję zdarzeń.

Uwierzytelnianie aplikacji na platformie Azure

W tym przewodniku Szybki start przedstawiono sposoby nawiązywania połączenia z usługą Azure Event Grid: parametry połączenia. W tej sekcji pokazano, jak używać parametry połączenia do nawiązywania połączenia z przestrzenią nazw usługi Event Grid. Jeśli dopiero zaczynasz korzystać z platformy Azure, opcja parametry połączenia jest łatwiejsza. Utworzenie nowej przestrzeni nazw usługi Event Grid automatycznie generuje początkowy klucz podstawowy i pomocniczy, który zapewnia pełną kontrolę nad wszystkimi aspektami przestrzeni nazw lub tematów. Klient może użyć parametry połączenia do nawiązania połączenia z przestrzenią nazw usługi Event Grid. Aby skopiować klucze dostępu dla tematu przestrzeni nazw, wykonaj następujące kroki:

  1. Na stronie Przestrzeń nazw usługi Event Grid wybierz pozycję Tematy.

  2. Wybierz temat, do którego chcesz uzyskać dostęp.

  3. Na stronie Klucze dostępu wybierz przycisk kopiowania obok pozycji Klucz 1 lub Klucz 2, aby skopiować klucze dostępu do schowka do późniejszego użycia. Wklej tę wartość do Notatnika lub innej tymczasowej lokalizacji.

    Zrzut ekranu przedstawiający klucz dostępu dla tematu usługi Event Grid.

Uruchamianie programu Visual Studio

Uruchom program Visual Studio. Jeśli zostanie wyświetlone okno Wprowadzenie , wybierz link Kontynuuj bez kodu w okienku po prawej stronie.

Wysyłanie komunikatów do tematu

W tej sekcji pokazano, jak utworzyć aplikację konsolową platformy .NET w celu wysyłania komunikatów do tematu usługi Event Grid.

Tworzenie aplikacji konsolowej

  1. W programie Visual Studio wybierz pozycję Plik ->Nowy ->Projekt menu.

  2. W oknie dialogowym Tworzenie nowego projektu wykonaj następujące kroki: Jeśli to okno dialogowe nie jest widoczne, wybierz pozycję Plik w menu, wybierz pozycję Nowy, a następnie wybierz pozycję Projekt.

    1. Wybierz język C# dla języka programowania.

    2. Wybierz pozycję Konsola dla typu aplikacji.

    3. Wybierz pozycję Aplikacja konsolowa z listy wyników.

    4. Następnie wybierz Dalej.

      Zrzut ekranu przedstawiający okno dialogowe Tworzenie nowego projektu z wybraną pozycją C# i konsolą.

  3. Wprowadź wartość EventSender jako nazwę projektu EventGridQuickStart jako nazwę rozwiązania, a następnie wybierz pozycję Dalej.

    Zrzut ekranu przedstawiający nazwy rozwiązań i projektów w oknie dialogowym Konfigurowanie nowego projektu.

  4. Na stronie Dodatkowe informacje wybierz pozycję Utwórz, aby utworzyć rozwiązanie i projekt.

Dodawanie pakietów NuGet do projektu

  1. Wybierz pozycję Narzędzia NuGet>Menedżer pakietów> Menedżer pakietów Konsola z menu.

  2. Uruchom następujące polecenie, aby zainstalować pakiet NuGet Azure.Messaging.EventGrid :

    Install-Package Azure.Messaging.EventGrid.Namespaces
    

Dodawanie kodu do wysyłania zdarzenia do tematu przestrzeni nazw

  1. Zastąp zawartość Program.cs pliku następującym kodem. Ważne kroki zostały opisane wraz z dodatkowymi informacjami w komentarzach do kodu.

    Ważne

    Zaktualizuj wartości symboli zastępczych (<NAMESPACE-ENDPOINT> , , <TOPIC-NAME><TOPIC-ACCESS-KEY>, <TOPIC-SUBSCRIPTION-NAME>) we fragmencie kodu przy użyciu punktu końcowego przestrzeni nazw, nazwy tematu i klucza tematu.

    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. Skompiluj projekt i upewnij się, że nie ma żadnych błędów.

  3. Uruchom program i poczekaj na komunikat potwierdzenia.

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

    Ważne

    W większości przypadków propagacja przypisania roli na platformie Azure potrwa minutę lub dwie. W rzadkich przypadkach może upłynąć do ośmiu minut. Jeśli podczas pierwszego uruchomienia kodu wystąpią błędy uwierzytelniania, zaczekaj chwilę i spróbuj ponownie.

  4. W witrynie Azure Portal wykonaj następujące kroki:

    1. Przejdź do przestrzeni nazw usługi Event Grid.

    2. Na stronie Przegląd zobaczysz liczbę zdarzeń opublikowanych w przestrzeni nazw na wykresie.

      Zrzut ekranu przedstawiający stronę Przestrzeń nazw usługi Event Grid w witrynie Azure Portal.

Ściąganie komunikatów z tematu

W tej sekcji utworzysz aplikację konsolową platformy .NET, która odbiera komunikaty z tematu.

Tworzenie projektu w celu otrzymania opublikowanych rozwiązań CloudEvents

  1. W oknie Eksplorator rozwiązań kliknij prawym przyciskiem myszy rozwiązanie EventGridQuickStart, wskaż polecenie Dodaj i wybierz pozycję Nowy projekt.
  2. Wybierz pozycję Aplikacja konsolowa, a następnie wybierz pozycję Dalej.
  3. Wprowadź wartość EventReceiver jako nazwę projektu, a następnie wybierz pozycję Utwórz.
  4. W oknie Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję EventReceiver i wybierz pozycję Ustaw jako projekt startowy.

Dodawanie pakietów NuGet do projektu

  1. Wybierz pozycję Narzędzia NuGet>Menedżer pakietów> Menedżer pakietów Konsola z menu.

  2. Uruchom następujące polecenie, aby zainstalować pakiet NuGet Azure.Messaging.EventGrid . Wybierz pozycję EventReceiver dla projektu domyślnego, jeśli nie został jeszcze ustawiony.

    Install-Package Azure.Messaging.EventGrid.Namespaces
    

    Zrzut ekranu przedstawiający projekt EventReceiver wybrany w konsoli Menedżer pakietów.

Dodawanie kodu do odbierania zdarzeń z tematu

W tej sekcji dodasz kod umożliwiający pobranie komunikatów z kolejki.

  1. Program W klasie dodaj następujący kod:

    Ważne

    Zaktualizuj wartości symboli zastępczych (<NAMESPACE-ENDPOINT> , <TOPIC-NAME>, <TOPIC-ACCESS-KEY>, <TOPIC-SUBSCRIPTION-NAME>) we fragmencie kodu przy użyciu punktu końcowego przestrzeni nazw, nazwy tematu, klucza tematu, nazwy subskrypcji tematu.

    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. Dołącz następujące metody na końcu Program klasy.

    // 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. W oknie Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt EventReceiver i wybierz polecenie Ustaw jako projekt startowy.

  4. Skompiluj projekt i upewnij się, że nie ma żadnych błędów.

  5. Uruchom aplikację EventReceiver i potwierdź, że w oknie danych wyjściowych zostaną wyświetlone trzy zdarzenia.

    Zrzut ekranu przedstawiający dane wyjściowe z aplikacji Odbiornik.

Czyszczenie zasobów

Przejdź do przestrzeni nazw usługi Event Grid w witrynie Azure Portal i wybierz pozycję Usuń w witrynie Azure Portal, aby usunąć przestrzeń nazw usługi Event Grid i temat w nim.

Zobacz Dokumentacja interfejsu API platformy .NET.