Rychlý start: Odesílání a příjem zpráv z tématu oboru názvů služby Azure Event Grid (.NET)
V tomto rychlém startu provedete následující kroky:
- Vytvořte obor názvů Event Gridu pomocí webu Azure Portal.
- Pomocí webu Azure Portal vytvořte téma oboru názvů Event Gridu.
- Vytvořte odběr událostí pomocí webu Azure Portal.
- Napsání konzolové aplikace .NET pro odeslání sady zpráv do tématu
- Napište konzolovou aplikaci .NET pro příjem těchto zpráv z tématu.
Poznámka:
Tento rychlý start obsahuje podrobné pokyny k implementaci jednoduchého scénáře odeslání dávky zpráv do tématu oboru názvů Event Gridu a jejich přijetí. Přehled klientské knihovny .NET najdete v klientské knihovně Azure Event Grid pro .NET. Další ukázky najdete v ukázkách .NET služby Event Grid na GitHubu.
Požadavky
Pokud s touto službou teprve začínáte, podívejte se před tímto rychlým startem na přehled služby Event Grid.
- Předplatné Azure. Pokud chcete používat služby Azure, včetně Azure Event Gridu, potřebujete předplatné. Pokud nemáte existující účet Azure, můžete si zaregistrovat bezplatnou zkušební verzi.
- Visual Studio 2022. Ukázková aplikace využívá nové funkce, které byly zavedeny v jazyce C# 10. Pokud chcete použít nejnovější syntaxi, doporučujeme nainstalovat .NET 6.0 nebo novější a nastavit jazyk
latest
na verzi . Pokud používáte Visual Studio, verze před sadou Visual Studio 2022 nejsou kompatibilní s nástroji potřebnými k sestavení projektů C# 10.
Vytvoření oboru názvů na webu Azure Portal
Obor názvů ve službě Azure Event Grid je logický kontejner pro jedno nebo více témat, klientů, skupin klientů, prostorů témat a vazeb oprávnění. Poskytuje jedinečný obor názvů, který umožňuje mít více prostředků ve stejné oblasti Azure. S oborem názvů Azure Event Gridu teď můžete seskupit související prostředky a spravovat je jako jednu jednotku ve vašem předplatném Azure.
Postupujte podle následujících částí a vytvořte, zobrazte a spravujte obor názvů služby Azure Event Grid.
Vytvoření oboru názvů:
Přihlaste se k webu Azure Portal.
Do vyhledávacího pole zadejte obory názvů Event Gridu a z výsledků vyberte Obory názvů Event Gridu.
Na stránce Obory názvů event Gridu vyberte na panelu nástrojů možnost + Vytvořit.
Na stránce Základy postupujte takto.
Vyberte předplatné Azure, ve kterém chcete vytvořit obor názvů.
Vyberte existující skupinu prostředků nebo vytvořte skupinu prostředků.
Zadejte název oboru názvů.
Vyberte oblast nebo umístění , kam chcete obor názvů vytvořit.
Vyberte Zkontrolovat a vytvořit v dolní části stránky.
Na kartě Zkontrolovat a vytvořit zkontrolujte nastavení a vyberte Vytvořit.
Na stránce Nasazení bylo úspěšné, vyberte Přejít k prostředku a přejděte do vašeho oboru názvů.
Vytvoření tématu oboru názvů
Pokud nejste na stránce Oboru názvů služby Event Grid, postupujte podle pokynů k vytvoření, zobrazení a správě oborů názvů a zobrazte obor názvů , který chcete použít k vytvoření tématu.
Na stránce Obor názvů služby Event Grid vyberte v části Zprostředkovatel událostí v levé nabídce možnost Témata.
Na stránce Témata vyberte na panelu příkazů tlačítko + Téma.
Na stránce Vytvořit téma zadejte název tématu, které chcete vytvořit, a vyberte Vytvořit.
Vytvoření odběru událostí
Pokud jste na stránce Témata oboru názvů Event Gridu na webu Azure Portal, vyberte téma ze seznamu témat. Pokud jste na stránce Témata , postupujte podle pokynů v tématu vytvoření, zobrazení a správě témat oboru názvů a identifikujte téma, které chcete použít k vytvoření odběru událostí.
Na stránce Téma oboru názvů Události Gird vyberte možnost Odběry v části Entity v nabídce vlevo.
Na stránce Předplatná vyberte na panelu příkazů tlačítko + Předplatné.
Na kartě Základy postupujte takto:
Zadejte název předplatného, které chcete vytvořit.
Ověřte, že schéma doručení je nastavené na Cloudové události verze 1.0.
Ověřte, že je režim doručení nastavený na frontu (režim vyžádání obsahu).
Vyberte Další: Filtry v dolní části stránky.
Na kartě Filtry přidejte názvy typů událostí, které chcete filtrovat v předplatném, a přidejte filtry atributů kontextu, které chcete použít v předplatném. Pak vyberte Další: Další funkce v dolní části stránky.
Na kartě Další funkce můžete zadat uchovávání událostí, maximální počet doručení, dobu trvání uzamčení a nastavení nedoručených dopisů.
Výběrem možnosti Vytvořit vytvořte odběr události.
Ověření aplikace v Azure
V tomto rychlém startu se dozvíte, jak se připojit ke službě Azure Event Grid: připojovací řetězec. V této části se dozvíte, jak se pomocí připojovací řetězec připojit k oboru názvů Služby Event Grid. Pokud s Azure začínáte, je možnost připojovací řetězec jednodušší. Vytvoření nového oboru názvů Event Gridu automaticky vygeneruje počáteční primární a sekundární klíč, který každý z nich uděluje úplnou kontrolu nad všemi aspekty oboru názvů nebo témat. Klient může použít připojovací řetězec pro připojení k oboru názvů Event Gridu. Pokud chcete zkopírovat přístupové klíče pro téma oboru názvů, postupujte takto:
Na stránce Obor názvů služby Event Grid vyberte Témata.
Vyberte téma, ke které potřebujete přístup.
Na stránce Přístupové klíče vyberte tlačítko pro kopírování vedle klíče 1 nebo Klíče 2 a zkopírujte přístupové klíče do schránky pro pozdější použití. Vložte tuto hodnotu do Poznámkového bloku nebo jiného dočasného umístění.
Spuštění sady Visual Studio
Spusťte Visual Studio. Pokud se zobrazí okno Začínáme , vyberte v pravém podokně odkaz Pokračovat bez kódu .
Odesílání zpráv do tématu
V této části se dozvíte, jak vytvořit konzolovou aplikaci .NET pro odesílání zpráv do tématu Event Gridu.
Vytvoření konzolové aplikace
V sadě Visual Studio vyberte nabídku Soubor ->Nový ->Projekt .
V dialogovém okně Vytvořit nový projekt proveďte následující kroky: Pokud toto dialogové okno nevidíte, vyberte v nabídce Soubor , vyberte Nový a pak vyberte Projekt.
Vyberte jazyk C# pro programovací jazyk.
Vyberte konzolu pro typ aplikace.
V seznamu výsledků vyberte konzolovou aplikaci .
Pak vyberte Další.
Jako název projektu zadejte EventSender, EventGridQuickStart pro název řešení a pak vyberte Další.
Na stránce Další informace vyberte Vytvořit, abyste vytvořili řešení a projekt.
Přidání balíčků NuGet do projektu
V nabídce vyberte Nástroje>NuGet Správce balíčků> Správce balíčků Konzola.
Spuštěním následujícího příkazu nainstalujte balíček NuGet Azure.Messaging.EventGrid :
Install-Package Azure.Messaging.EventGrid.Namespaces
Přidání kódu pro odeslání události do tématu oboru názvů
Nahraďte obsah
Program.cs
následujícím kódem. Důležité kroky jsou popsané s dalšími informacemi v komentářích ke kódu.Důležité
Aktualizujte zástupné hodnoty (
<NAMESPACE-ENDPOINT>
,<TOPIC-NAME>
,<TOPIC-ACCESS-KEY>
,<TOPIC-SUBSCRIPTION-NAME>
) v fragmentu kódu pomocí koncového bodu oboru názvů, názvu tématu a klíče tématu.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; } }
Sestavte projekt a ujistěte se, že nedošlo k žádným chybám.
Spusťte program a počkejte na potvrzovací zprávu.
Three events have been published to the topic. Press any key to end the application.
Důležité
Ve většině případů bude trvat minutu nebo dvě, než se přiřazení role rozšíří v Azure. Ve výjimečných případech může trvat až osm minut. Pokud při prvním spuštění kódu dojde k chybám ověřování, chvíli počkejte a zkuste to znovu.
Na webu Azure Portal postupujte takto:
Přijetí zpráv z tématu
V této části vytvoříte konzolovou aplikaci .NET, která přijímá zprávy z tématu.
Vytvoření projektu pro příjem publikovaných CloudEvents
- V okně Průzkumník řešení klikněte pravým tlačítkem na řešení EventGridQuickStart, přejděte na příkaz Přidat a vyberte Nový projekt.
- Vyberte Konzolová aplikace a vyberte Další.
- Jako název projektu zadejte EventReceiver a vyberte Vytvořit.
- V okně Průzkumník řešení klikněte pravým tlačítkem na EventReceiver a vyberte Nastavit jako spouštěný projekt.
Přidání balíčků NuGet do projektu
V nabídce vyberte Nástroje>NuGet Správce balíčků> Správce balíčků Konzola.
Spuštěním následujícího příkazu nainstalujte balíček NuGet Azure.Messaging.EventGrid . Pokud ještě není nastavený, vyberte EventReceiver pro výchozí projekt .
Install-Package Azure.Messaging.EventGrid.Namespaces
Přidání kódu pro příjem událostí z tématu
V této části přidáte kód pro načtení zpráv z fronty.
Program
Do třídy přidejte následující kód:Důležité
Aktualizujte zástupné hodnoty (
<NAMESPACE-ENDPOINT>
,<TOPIC-NAME>
,<TOPIC-ACCESS-KEY>
,<TOPIC-SUBSCRIPTION-NAME>
) v fragmentu kódu pomocí koncového bodu oboru názvů, názvu tématu, klíče tématu, názvu předplatného tématu.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("-----------------");
Na konec
Program
třídy připojte následující metody.// 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; } }
V okně Průzkumník řešení klikněte pravým tlačítkem na projekt EventReceiver a vyberte Nastavit jako spouštěný projekt.
Sestavte projekt a ujistěte se, že nedošlo k žádným chybám.
Spusťte aplikaci EventReceiver a potvrďte, že se v okně výstupu zobrazí tři události.
Vyčištění prostředků
Na webu Azure Portal přejděte do svého oboru názvů Event Gridu a výběrem možnosti Odstranit na webu Azure Portal odstraňte obor názvů Event Gridu a téma v něm.
Příbuzná témata
Viz referenční informace k rozhraní .NET API.