Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Diese Schnellstartanleitung umfasst folgende Schritte:
- Erstellen eines Event Grid-Namespace über das Azure-Portal
- Erstellen eines Event Grid-Namespacethemas über das Azure-Portal
- Erstellen eines Ereignisabonnements über das Azure-Portal
- Schreiben einer .NET-Konsolenanwendung zum Senden von Nachrichten an das Thema
- Schreiben einer .NET-Konsolenanwendung zum Empfangen dieser Nachrichten aus dem Thema
Hinweis
In diesem Schnellstart wird Schritt für Schritt die Implementierung eines einfachen Szenarios erläutert, bei dem Sie einen Batch von Nachrichten an ein Event Grid-Thema senden und diese Nachrichten empfangen. Eine Übersicht über die .NET-Clientbibliothek finden Sie unter Azure Event Grid-Clientbibliothek für .NET. Weitere Beispiele finden Sie in den Event Grid-.NET Beispielen auf GitHub.
Voraussetzungen
Wenn Sie noch keine Erfahrung mit dem Dienst haben, lesen Sie die Übersicht über Event Grid, bevor Sie die Schritte in diesem Schnellstart durchführen.
- Azure-Abonnement. Für die Verwendung von Azure-Diensten benötigen Sie ein Abonnement. Das gilt auch für Azure Event Grid. Wenn Sie nicht über ein Azure-Konto verfügen, können Sie sich für eine kostenlose Testversion registrieren.
-
Visual Studio 2022 Die Beispielanwendung nutzt neue Features, die in C# 10 eingeführt wurden. Um die neueste Syntax verwenden zu können, empfiehlt es sich, mindestens .NET 6.0 zu installieren und die Sprachversion auf
latestfestzulegen. Bei Verwendung von Visual Studio sind Versionen vor Visual Studio 2022 nicht mit den Tools kompatibel, die zum Erstellen von C# 10-Projekten erforderlich sind.
Erstellen eines Namespace im Azure-Portal
Ein Namespace in Azure Event Grid ist ein logischer Container für ein oder mehrere Themen, Clients, Clientgruppen, Themenplätze und Berechtigungsbindungen. Mit einem Azure Event Grid-Namespace können Sie verwandte Ressourcen gruppieren und als einzelne Einheit in Ihrem Azure-Abonnement verwalten. Mit einem eindeutigen Namespace können Sie über mehrere Ressourcen in derselben Azure-Region verfügen.
So erstellen Sie einen Namespace
Melden Sie sich beim Azure-Portal an.
Geben Sie im Suchfeld Event Grid-Namespaces ein und wählen Sie Event Grid-Namespaces aus den Ergebnissen aus.
Wählen Sie auf der Seite "Event Grid Namespaces " die Option +Erstellen aus.
Führen Sie auf der Seite Grundlagen die folgenden Schritte aus.
Wählen Sie das Azure-Abonnement aus, in dem der Namespace erstellt werden soll.
Wählen Sie eine vorhandene Ressourcengruppe aus, oder erstellen Sie eine Ressourcengruppe.
Geben Sie einen Namen für den Namespace ein.
Wählen Sie den Speicherort für den Namespace aus.
Klicken Sie auf Überprüfen + erstellen.
Überprüfen Sie Ihre Einstellungen auf der Registerkarte Überprüfen und Erstellen. Wählen Sie dann Erstellen aus.
Wählen Sie auf der Seite Bereitstellung erfolgreich die Option Zu Ressource wechseln aus, um zu Ihrem Namespace zu navigieren.
Erstellen eines Namespacethemas
Wenn Sie nicht auf der Event Grid-Namespace-Seite sind, führen Sie die Schritte zum Erstellen, Anzeigen und Verwalten von Namespaces aus, um den Namespace anzuzeigen, den Sie zum Erstellen des Themas verwenden möchten.
Wählen Sie auf der Seite "Event Grid Namespace" unter "Ereignisbroker" die Option "Themen" aus.
Wählen Sie auf der Seite "Themen"+Thema aus.
Geben Sie auf der Registerkarte Thema erstellen den Namen des Themas ein, das Sie erstellen möchten, und wählen Sie dann Erstellen aus.
Erstellen eines Ereignisabonnements
Wenn Sie sich auf der Seite Themen Ihres Event Grid-Namespaces im Azure-Portal befinden, wählen Sie Ihr Thema aus der Liste der Themen aus. Wenn Sie sich auf der Seite Themen befinden, führen Sie die Anweisungen zum Erstellen, Anzeigen und Verwalten eines Namespacethemas aus, um das Thema zu identifizieren, mit dem Sie das Ereignisabonnement erstellen möchten.
Wählen Sie auf der Seite "Event Grid Namespace Topic " die Option "Abonnements " im Abschnitt "Entitäten " im linken Menü aus.
Wählen Sie auf der Seite Abonnements auf der Befehlsleiste die Schaltfläche + Abonnement aus.
Führen Sie auf der Registerkarte Grundlagen die folgenden Schritte aus:
Geben Sie einen Namen für das Abonnement ein, das Sie erstellen möchten.
Vergewissern Sie sich, dass das Übermittlungsschema auf Cloud Events v1.0 festgelegt ist.
Vergewissern Sie sich, dass der Übermittlungsmodus auf Warteschlange (Pullmodus) festgelegt ist.
Wählen Sie am unteren Rand der Seite Weiter: Filter aus.
Fügen Sie auf der Registerkarte Filter die Namen der Ereignistypen hinzu, die Sie im Abonnement filtern möchten, und fügen Sie Kontextattributefilter hinzu, die Sie im Abonnement verwenden möchten. Wählen Sie dann unten auf der Seite die Option Weiter: Zusätzliche Features aus.
In der Registerkarte Zusätzliche Funktionen können Sie die Ereignisaufbewahrung, die maximale Anzahl der Bereitstellungen, die Sperrdauer und die Einstellungen für „Inaktivierung“ angeben.
Wählen Sie Erstellen aus, um das Ereignisabonnement zu erstellen.
Authentifizieren der App bei Azure
In diesem Schnellstart werden Möglichkeiten zum Herstellen einer Verbindung mit Azure Event Grid gezeigt: Verbindungszeichenfolge. In diesem Abschnitt wird gezeigt, wie Sie eine Verbindungszeichenfolge verwenden, um eine Verbindung mit einem Event Grid-Namespace herzustellen. Wenn Sie noch nicht mit Azure arbeiten, ist die Verbindungszeichenfolgenoption einfacher zu befolgen. Beim Erstellen eines neuen Event Grid-Namespace werden automatisch anfängliche Primär- und Sekundärschlüssel generiert, mit denen Sie jeweils die volle Kontrolle über sämtliche Aspekte des Namespace und der Themen haben. Ein Client kann die Verbindungszeichenfolge verwenden, um eine Verbindung mit dem Event Grid-Namespace herzustellen. Führen Sie zum Kopieren der Zugriffsschlüssel für Ihr Namespacethema die folgenden Schritte aus:
Wählen Sie auf der Seite Event Grid-Namespace die Option Themen aus.
Wählen Sie das Thema aus, auf das Sie zugreifen müssen.
Wählen Sie auf der Seite Zugriffsschlüssel die Schaltfläche „Kopieren“ neben Schlüssel 1 oder Schlüssel 2 aus, um die Zugriffsschlüssel zur späteren Verwendung in die Zwischenablage zu kopieren. Fügen Sie diesen Wert in den Editor oder an einem anderen temporären Speicherort ein.
Starten Sie Visual Studio.
Starten Sie Visual Studio. Wenn das Fenster Erste Schritte angezeigt wird, wählen Sie im rechten Bereich den Link Ohne Code fortfahren aus.
Senden von Nachrichten an das Thema
In diesem Abschnitt erfahren Sie, wie Sie eine .NET-Konsolenanwendung zum Senden von Nachrichten an ein Event Grid-Thema erstellen.
Erstellen einer Konsolenanwendung
Wählen Sie in Visual Studio Datei ->Neu ->Projekt aus.
Gehen Sie im Dialogfeld Neues Projekt erstellen wie folgt vor: Wenn dieses Dialogfeld nicht angezeigt wird, wählen Sie im Menü Datei aus, wählen Sie Neu aus, und wählen Sie dann Projekt aus.
Wählen Sie die Programmiersprache C# aus.
Wählen Sie den Anwendungstyp Konsole aus.
Wählen Sie in der Ergebnisliste Konsolen-App aus.
Klicken Sie anschließend auf Weiter.
Geben Sie als Projektname EventSender und als Lösungsname EventGridQuickStart ein, und wählen Sie anschließend Weiter aus.
Wählen Sie auf der Seite Zusätzliche Informationen die Option Erstellen aus, um Projektmappe und Projekt zu erstellen.
Hinzufügen der NuGet-Pakete zum Projekt
Wählen Sie im Menü Extras>NuGet-Paket-Manager>Paket-Manager-Konsole aus.
Führen Sie den folgenden Befehl aus, um das NuGet-Paket Azure.Messaging.EventGrid zu installieren:
Install-Package Azure.Messaging.EventGrid.Namespaces
Hinzufügen von Code zum Senden eines Ereignisses an das Namespacethema
Ersetzen Sie den Inhalt von
Program.csdurch den folgenden Code. Die wichtigsten Schritte sind skizziert, mit zusätzlichen Informationen in den Codekommentaren.Wichtig
Aktualisieren Sie die Platzhalterwerte (
<NAMESPACE-ENDPOINT>,<TOPIC-NAME>,<TOPIC-ACCESS-KEY>) im Codeausschnitt mit Ihrem Namespaceendpunkt, dem Themennamen und dem Themenschlüssel.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; } }Erstellen Sie das Projekt, und vergewissern Sie sich, dass keine Fehler vorhanden sind.
Führen Sie das Programm aus, und warten Sie auf die Bestätigungsmeldung.
Three events have been published to the topic. Press any key to end the application.Wichtig
In der Regel dauert die Verteilung der Rollenzuweisung in Azure ein bis zwei Minuten. In seltenen Fällen kann sie aber bis zu acht Minuten dauern. Wenn bei der ersten Ausführung Ihres Codes Authentifizierungsfehler auftreten, warten Sie einige Momente, und versuchen Sie es dann erneut.
Gehen Sie im Azure-Portal wie folgt vor:
Pullen von Nachrichten aus dem Thema
In diesem Abschnitt wird eine .NET-Konsolenanwendung zum Empfangen von Nachrichten aus dem Thema erstellt.
Erstellen eines Projekts zum Empfangen der veröffentlichten Cloudereignisse (CloudEvents)
- Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe EventGridQuickStart, zeigen Sie auf Hinzufügen, und wählen Sie anschließend Neues Projekt aus.
- Wählen Sie zuerst Konsolenanwendung, dann Weiter aus.
- Geben Sie unter Projektname den Namen EventReceiver ein, und wählen Sie Erstellen aus.
- Klicken Sie im Fenster Projektmappen-Explorer mit der rechten Maustaste auf EventReceiver, und wählen Sie Als Startprojekt festlegen aus.
Hinzufügen der NuGet-Pakete zum Projekt
Wählen Sie im Menü Extras>NuGet-Paket-Manager>Paket-Manager-Konsole aus.
Führen Sie den folgenden Befehl aus, um das NuGet-Paket Azure.Messaging.EventGrid zu installieren. Wählen Sie EventReceiver für das Standardprojekt aus, wenn dies noch nicht festgelegt ist.
Install-Package Azure.Messaging.EventGrid.Namespaces
Hinzufügen des Codes zum Empfangen von Ereignissen aus dem Thema
In diesem Abschnitt fügen Sie Code hinzu, mit dem Nachrichten aus der Warteschlange abgerufen werden.
Fügen Sie innerhalb der Klasse
Programden folgenden Code hinzu:Wichtig
Ersetzen Sie die Platzhalterwerte (
<NAMESPACE-ENDPOINT>,<TOPIC-NAME>,<TOPIC-ACCESS-KEY>, und<TOPIC-SUBSCRIPTION-NAME>) im Codeschnipsel mit Ihrem Namespace-Endpunkt, dem Themennamen, dem Themenschlüssel und dem Namen des Themenabonnements.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("-----------------");Fügen Sie am Ende der Klasse
Programdie folgenden Methoden hinzu:// 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; } }Klicken Sie im Fenster Projektmappen-Explorer mit der rechten Maustaste auf EventReceiver Projekt, und wählen Sie Als Startprojekt festlegen aus.
Erstellen Sie das Projekt, und vergewissern Sie sich, dass keine Fehler vorhanden sind.
Führen Sie die EventReceiver-Anwendung aus, und bestätigen Sie, dass die drei Ereignisse im Ausgabefenster angezeigt werden.
Bereinigen von Ressourcen
Navigieren Sie im Azure-Portal zu Ihrem Event Grid-Namespace, und wählen Sie Löschen im Azure-Portal aus, um den Event Grid-Namespace und das darin enthaltene Thema zu löschen.
Verwandte Themen
Weitere Informationen finden Sie in der ASP.NET API-Referenz.