Sdílet prostřednictvím


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:

  1. Vytvořte obor názvů Event Gridu pomocí webu Azure Portal.
  2. Pomocí webu Azure Portal vytvořte téma oboru názvů Event Gridu.
  3. Vytvořte odběr událostí pomocí webu Azure Portal.
  4. Napsání konzolové aplikace .NET pro odeslání sady zpráv do tématu
  5. 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 latestna 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ů:

  1. Přihlaste se k webu Azure Portal.

  2. Do vyhledávacího pole zadejte obory názvů Event Gridu a z výsledků vyberte Obory názvů Event Gridu.

    Snímek obrazovky zobrazující obory názvů Event Gridu ve výsledcích hledání

  3. Na stránce Obory názvů event Gridu vyberte na panelu nástrojů možnost + Vytvořit.

    Snímek obrazovky se stránkou Obory názvů Event Gridu s vybraným tlačítkem Vytvořit na panelu nástrojů

  4. Na stránce Základy postupujte takto.

    1. Vyberte předplatné Azure, ve kterém chcete vytvořit obor názvů.

    2. Vyberte existující skupinu prostředků nebo vytvořte skupinu prostředků.

    3. Zadejte název oboru názvů.

    4. Vyberte oblast nebo umístění , kam chcete obor názvů vytvořit.

    5. Vyberte Zkontrolovat a vytvořit v dolní části stránky.

      Snímek obrazovky s kartou Základy na stránce Vytvořit obor názvů

  5. Na kartě Zkontrolovat a vytvořit zkontrolujte nastavení a vyberte Vytvořit.

  6. 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ů

  1. 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.

  2. 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.

  3. Na stránce Témata vyberte na panelu příkazů tlačítko + Téma.

    Snímek obrazovky znázorňující vytvoření tématu oboru názvů Event Gridu

  4. Na stránce Vytvořit téma zadejte název tématu, které chcete vytvořit, a vyberte Vytvořit.

    Snímek obrazovky se základy vytváření tématu oboru názvů Event Gridu

Vytvoření odběru událostí

  1. 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í.

    Snímek obrazovky zobrazující stránku témat Event Gridu s vybraným tématem

  2. Na stránce Téma oboru názvů Události Gird vyberte možnost Odběry v části Entity v nabídce vlevo.

  3. Na stránce Předplatná vyberte na panelu příkazů tlačítko + Předplatné.

    Snímek obrazovky znázorňující vytvoření odběru událostí Event Gridu

  4. Na kartě Základy postupujte takto:

    1. Zadejte název předplatného, které chcete vytvořit.

    2. Ověřte, že schéma doručení je nastavené na Cloudové události verze 1.0.

    3. Ověřte, že je režim doručení nastavený na frontu (režim vyžádání obsahu).

    4. Vyberte Další: Filtry v dolní části stránky.

      Snímek obrazovky znázorňující základy vytváření odběru událostí Event Gridu

  5. 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.

    Snímek obrazovky znázorňující vytvoření filtrů odběru událostí Event Gridu

  6. 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ů.

    Snímek obrazovky zobrazující odběr událostí Event Gridu– vytvoří další funkce.

  7. 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:

  1. Na stránce Obor názvů služby Event Grid vyberte Témata.

  2. Vyberte téma, ke které potřebujete přístup.

  3. 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í.

    Snímek obrazovky znázorňující přístupový klíč pro téma Event Gridu

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

  1. V sadě Visual Studio vyberte nabídku Soubor ->Nový ->Projekt .

  2. 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.

    1. Vyberte jazyk C# pro programovací jazyk.

    2. Vyberte konzolu pro typ aplikace.

    3. V seznamu výsledků vyberte konzolovou aplikaci .

    4. Pak vyberte Další.

      Snímek obrazovky s dialogovým oknem Vytvořit nový projekt s vybraným jazykem C# a konzolou

  3. Jako název projektu zadejte EventSender, EventGridQuickStart pro název řešení a pak vyberte Další.

    Snímek obrazovky znázorňující názvy řešení a projektů v dialogovém okně Konfigurovat nový projekt

  4. Na stránce Další informace vyberte Vytvořit, abyste vytvořili řešení a projekt.

Přidání balíčků NuGet do projektu

  1. V nabídce vyberte Nástroje>NuGet Správce balíčků> Správce balíčků Konzola.

  2. 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ů

  1. 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; }
    }
    
    
  2. Sestavte projekt a ujistěte se, že nedošlo k žádným chybám.

  3. 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.

  4. Na webu Azure Portal postupujte takto:

    1. Přejděte do oboru názvů služby Event Grid.

    2. Na stránce Přehled se zobrazí počet událostí publikovaných do oboru názvů v grafu.

      Snímek obrazovky se stránkou Oboru názvů Event Gridu na webu Azure Portal

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

  1. 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.
  2. Vyberte Konzolová aplikace a vyberte Další.
  3. Jako název projektu zadejte EventReceiver a vyberte Vytvořit.
  4. 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

  1. V nabídce vyberte Nástroje>NuGet Správce balíčků> Správce balíčků Konzola.

  2. 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
    

    Snímek obrazovky znázorňující projekt EventReceiver vybraný v konzole Správce balíčků

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.

  1. 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("-----------------");
    
    
  2. 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; }
    }    
    
    
  3. V okně Průzkumník řešení klikněte pravým tlačítkem na projekt EventReceiver a vyberte Nastavit jako spouštěný projekt.

  4. Sestavte projekt a ujistěte se, že nedošlo k žádným chybám.

  5. Spusťte aplikaci EventReceiver a potvrďte, že se v okně výstupu zobrazí tři události.

    Snímek obrazovky znázorňující výstup z aplikace Receiver

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.

Viz referenční informace k rozhraní .NET API.