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:
- Utwórz przestrzeń nazw usługi Event Grid przy użyciu witryny Azure Portal.
- Utwórz temat przestrzeni nazw usługi Event Grid przy użyciu witryny Azure Portal.
- Utwórz subskrypcję zdarzeń przy użyciu witryny Azure Portal.
- Pisanie aplikacji konsolowej .NET w celu wysyłania zestawu komunikatów do tematu
- 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:
Zaloguj się w witrynie Azure Portal.
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.
Na stronie Przestrzenie nazw usługi Event Grid wybierz pozycję + Utwórz na pasku narzędzi.
Na stronie Podstawy wykonaj następujące kroki.
Wybierz subskrypcję platformy Azure, w której chcesz utworzyć przestrzeń nazw.
Wybierz istniejącą grupę zasobów lub utwórz grupę zasobów.
Wprowadź nazwę przestrzeni nazw.
Wybierz region lub lokalizację , w której chcesz utworzyć przestrzeń nazw.
Wybierz pozycję Przejrzyj i utwórz w dolnej części strony.
Na karcie Przeglądanie + tworzenie przejrzyj ustawienia i wybierz pozycję Utwórz.
Na stronie Wdrożenie powiodło się wybierz pozycję Przejdź do zasobu, aby przejść do przestrzeni nazw.
Tworzenie tematu przestrzeni nazw
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.
Na stronie Przestrzeń nazw usługi Event Grid wybierz opcję Tematy w sekcji Broker zdarzeń w menu po lewej stronie.
Na stronie Tematy wybierz przycisk + Temat na pasku poleceń.
Na stronie Tworzenie tematu wpisz nazwę tematu, który chcesz utworzyć, a następnie wybierz pozycję Utwórz.
Tworzenie subskrypcji zdarzeń
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ń.
Na stronie Temat obszaru nazw gird zdarzeń wybierz opcję Subskrypcje w sekcji Jednostki w menu po lewej stronie.
Na stronie Subskrypcje wybierz przycisk "+ Subskrypcja" na pasku poleceń.
Na karcie Podstawy wykonaj następujące kroki:
Wprowadź nazwę subskrypcji, którą chcesz utworzyć
Upewnij się, że schemat dostarczania jest ustawiony na zdarzenia w chmurze w wersji 1.0.
Upewnij się, że tryb dostarczania jest ustawiony na Kolejka (tryb ściągania).
Wybierz pozycję Dalej: filtry w dolnej części strony.
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.
Na karcie Dodatkowe funkcje można określić ustawienia przechowywania zdarzeń, maksymalnej liczby dostarczania, czasu trwania blokady i utraconych komunikatów.
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:
Na stronie Przestrzeń nazw usługi Event Grid wybierz pozycję Tematy.
Wybierz temat, do którego chcesz uzyskać dostęp.
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.
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
W programie Visual Studio wybierz pozycję Plik ->Nowy ->Projekt menu.
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.
Wybierz język C# dla języka programowania.
Wybierz pozycję Konsola dla typu aplikacji.
Wybierz pozycję Aplikacja konsolowa z listy wyników.
Następnie wybierz Dalej.
Wprowadź wartość EventSender jako nazwę projektu EventGridQuickStart jako nazwę rozwiązania, a następnie wybierz pozycję Dalej.
Na stronie Dodatkowe informacje wybierz pozycję Utwórz, aby utworzyć rozwiązanie i projekt.
Dodawanie pakietów NuGet do projektu
Wybierz pozycję Narzędzia NuGet>Menedżer pakietów> Menedżer pakietów Konsola z menu.
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
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; } }
Skompiluj projekt i upewnij się, że nie ma żadnych błędów.
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.
W witrynie Azure Portal wykonaj następujące kroki:
Ś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
- W oknie Eksplorator rozwiązań kliknij prawym przyciskiem myszy rozwiązanie EventGridQuickStart, wskaż polecenie Dodaj i wybierz pozycję Nowy projekt.
- Wybierz pozycję Aplikacja konsolowa, a następnie wybierz pozycję Dalej.
- Wprowadź wartość EventReceiver jako nazwę projektu, a następnie wybierz pozycję Utwórz.
- W oknie Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję EventReceiver i wybierz pozycję Ustaw jako projekt startowy.
Dodawanie pakietów NuGet do projektu
Wybierz pozycję Narzędzia NuGet>Menedżer pakietów> Menedżer pakietów Konsola z menu.
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
Dodawanie kodu do odbierania zdarzeń z tematu
W tej sekcji dodasz kod umożliwiający pobranie komunikatów z kolejki.
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("-----------------");
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; } }
W oknie Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt EventReceiver i wybierz polecenie Ustaw jako projekt startowy.
Skompiluj projekt i upewnij się, że nie ma żadnych błędów.
Uruchom aplikację EventReceiver i potwierdź, że w oknie danych wyjściowych zostaną wyświetlone trzy zdarzenia.
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.
Powiązane tematy
Zobacz Dokumentacja interfejsu API platformy .NET.