Rövid útmutató: Üzenetek küldése és fogadása egy Azure Event Grid-névtér témakörből (.NET)

Ebben a rövid útmutatóban a következő lépéseket kell elvégeznie:

  1. Hozzon létre egy Event Grid-névteret az Azure Portal használatával.
  2. Hozzon létre egy Event Grid-névtér témakört az Azure Portal használatával.
  3. Hozzon létre egy esemény-előfizetést az Azure Portal használatával.
  4. .NET-konzolalkalmazás írása üzenetek küldéséhez a témakörbe
  5. Írjon egy .NET-konzolalkalmazást, hogy megkapja ezeket az üzeneteket a témakörből.

Feljegyzés

Ez a rövid útmutató részletes útmutatást nyújt egy egyszerű forgatókönyv implementálásához, amely egy üzenetköteget küld egy Event Grid-névtértémakörbe, majd fogadja őket. A .NET-ügyfélkódtár áttekintését a .NET-hez készült Azure Event Grid ügyfélkódtárban tekintheti meg. További mintákért lásd : Event Grid .NET-minták a GitHubon.

Előfeltételek

Ha még nem ismerkedik a szolgáltatással, a rövid útmutató előtt tekintse meg az Event Grid áttekintését .

  • Azure-előfizetés. Az Azure-szolgáltatások, köztük az Azure Event Grid használatához előfizetésre van szükség. Ha nem rendelkezik meglévő Azure-fiókkal, regisztrálhat egy ingyenes próbaverzióra.
  • Visual Studio 2022. A mintaalkalmazás a C# 10-ben bevezetett új funkciókat használja. A legújabb szintaxis használatához javasoljuk, hogy telepítse a .NET 6.0-s vagy újabb verzióját, és állítsa a nyelvi verziót a következőre latest: . Ha Visual Studio-t használ, a Visual Studio 2022 előtti verziók nem kompatibilisek a C# 10-projektek létrehozásához szükséges eszközökkel.

Névtér létrehozása az Azure Portalon

Az Azure Event Grid névtere egy logikai tároló egy vagy több témakörhöz, ügyfélhez, ügyfélcsoporthoz, témakörtérhez és engedélykötéshez. Az Azure Event Grid-névtérrel csoportosíthatja a kapcsolódó erőforrásokat, és egyetlen egységként kezelheti őket az Azure-előfizetésben. Az egyedi névtér lehetővé teszi több erőforrás használatát ugyanabban az Azure-régióban.

Névtér létrehozása:

  1. Jelentkezzen be a Azure portalra.

  2. A keresőmezőbe írja be az Event Grid-névtereket , és válassza ki az Event Grid-névtereket az eredmények közül.

    Képernyőkép az Event Grid-névterekről a keresési eredmények között.

  3. Az Event Grid-névterek lapon válassza a + Létrehozás lehetőséget.

    Képernyőkép az Event Grid névtereinek lapjáról, amelyen a Létrehozás gomb látható az eszköztáron.

  4. Az Alapok lapon kövesse az alábbi lépéseket.

    1. Válassza ki azt az Azure-előfizetést, amelyben létre szeretné hozni a névteret.

    2. Válasszon ki egy meglévő erőforráscsoportot , vagy hozzon létre egy erőforráscsoportot.

    3. Adja meg a névtér nevét .

    4. Válassza ki a névtér helyét .

    5. Válassza az Áttekintés + létrehozás lehetőséget.

      Képernyőkép a Névtér létrehozása lap Alapjai lapjáról.

  5. A Véleményezés + létrehozás lapon tekintse át a beállításokat. Ezután válassza a Létrehozás lehetőséget.

  6. A Sikeres üzembe helyezés lapon válassza az Erőforrás megnyitása lehetőséget a névtérhez való navigáláshoz.

Névtértéma létrehozása

  1. Ha nem szerepel az Event Grid Névtér lapján, kövesse a névterek létrehozásának, megtekintésének és kezelésének lépéseit a témakör létrehozásához használni kívánt névtér megtekintéséhez.

  2. Az Event Grid Névtér lapján, az Eseményszervező alatt válassza a Témakörök lehetőséget.

  3. A Témakörök lapon válassza a + Témakör lehetőséget.

    Képernyőkép az Event Grid-névtér témakörének létrehozásáról.

  4. A Témakör létrehozása lapon írja be a létrehozni kívánt témakör nevét, és válassza a Létrehozás lehetőséget.

    Képernyőkép az Event Grid névtér témakör létrehozási alapjairól.

Esemény-előfizetés létrehozása

  1. Ha az Event Grid-névtér Témakörök lapján van az Azure Portalon, válassza ki a témakört a témakörök listájából. Ha a Témakörök lapon található, kövesse a névtér-témakörök létrehozásának, megtekintésének és kezelésének utasításait az esemény-előfizetés létrehozásához használni kívánt témakör azonosításához.

    Képernyőkép az Event Grid-témakörök oldalról egy kijelölt témakörrel.

  2. Az Event Grid Névtér témakör lapján válassza az Előfizetések lehetőséget a bal oldali menü Entitások szakaszában.

  3. Az Előfizetések lapon válassza a "+ Előfizetés" gombot a parancssávon.

    Képernyőkép az Event Grid-esemény-előfizetés létrehozásáról.

  4. Az Alapismeretek lapon kövesse az alábbi lépéseket:

    1. Adja meg a létrehozni kívánt előfizetés nevét

    2. Ellenőrizze, hogy a kézbesítési séma be van-e állítva a Cloud Events 1.0-s verzióban.

    3. Győződjön meg arról, hogy a kézbesítési mód várólistára van állítva (lekéréses mód).

    4. Válassza a Tovább elemet : Szűrők az oldal alján.

      Képernyőkép az Event Grid esemény-előfizetés létrehozási alapjairól.

  5. A Szűrők lapon adja meg az előfizetésben szűrni kívánt eseménytípusok nevét, és adja hozzá az előfizetésben használni kívánt környezetattribútum-szűrőket. Ezután válassza a Tovább elemet : További funkciók az oldal alján.

    Képernyőkép az Event Grid esemény-előfizetés létrehozási szűrőiről.

  6. A További funkciók lapon megadhatja az eseménymegőrzést, a maximális kézbesítésszámot, a zárolási időtartamot és a kézbesíthetetlen levelek beállításait.

    Képernyőkép az Event Grid-esemény-előfizetésről, amely további funkciókat hoz létre.

  7. Válassza a Létrehozás lehetőséget az esemény-előfizetés létrehozásához.

Az alkalmazás hitelesítése az Azure-ban

Ez a rövid útmutató bemutatja, hogyan csatlakozhat az Azure Event Gridhez: kapcsolati sztring. Ez a szakasz bemutatja, hogyan lehet kapcsolati sztring csatlakozni egy Event Grid-névtérhez. Ha még nem ismerkedik az Azure-sal, a kapcsolati sztring lehetőség könnyebben követhető. Új Event Grid-névtér létrehozása automatikusan létrehoz egy kezdeti elsődleges és másodlagos kulcsot, amely minden esetben teljes körű ellenőrzést biztosít a névtér vagy témakörök minden aspektusa felett. Az ügyfél a kapcsolati sztring használatával csatlakozhat az Event Grid névteréhez. A névtér témaköréhez tartozó hozzáférési kulcsok másolásához kövesse az alábbi lépéseket:

  1. Az Event Grid Névtér lapján válassza a Témakörök lehetőséget.

  2. Válassza ki a hozzáférést igénylő témakört.

  3. Az Access-kulcsok lapon válassza az 1. vagy a 2. kulcs melletti másolás gombot a hozzáférési kulcsok vágólapra másolásához későbbi használatra. Illessze be ezt az értéket a Jegyzettömbbe vagy egy másik ideiglenes helyre.

    Képernyőkép egy Event Grid-témakör hozzáférési kulcsával.

A Visual Studio elindítása

Indítsa el a Visual Studiót. Ha megjelenik az Első lépések ablak, válassza a Folytatás kód nélkül hivatkozást a jobb oldali panelen.

Üzenet küldése az üzenettémához

Ez a szakasz bemutatja, hogyan hozhat létre .NET-konzolalkalmazást, amely üzeneteket küld egy Event Grid-témakörbe.

Konzolalkalmazás létrehozása

  1. A Visual Studióban válassza a Fájl –>Új –>Projekt menüt.

  2. Az Új projekt létrehozása párbeszédpanelen hajtsa végre a következő lépéseket: Ha nem látja ezt a párbeszédpanelt, válassza a Fájl lehetőséget a menüben, válassza az Új, majd a Projekt lehetőséget.

    1. A programozási nyelvhez válassza a C# lehetőséget.

    2. Válassza a Konzol lehetőséget az alkalmazás típusához.

    3. Válassza a Konzolalkalmazás lehetőséget az eredmények listájából.

    4. Ezután válassza a Tovább gombot.

      Képernyőkép az Új projekt létrehozása párbeszédpanelről, amelyen a C# és a Konzol van kiválasztva.

  3. Adja meg az EventSender nevet a projektnévhez, az EventGridQuickStartot a megoldásnévhez, majd válassza a Tovább gombot.

    Képernyőkép a megoldásról és a projektnevekről az új projekt konfigurálása párbeszédpanelen.

  4. A További információ lapon válassza a Létrehozás lehetőséget a megoldás és a projekt létrehozásához.

NuGet-csomagok hozzáadása a projekthez

  1. Válassza az > Csomagkezelő konzol lehetőséget a menüből.

  2. Futtassa a következő parancsot az Azure.Messaging.EventGrid NuGet-csomag telepítéséhez:

    Install-Package Azure.Messaging.EventGrid.Namespaces
    

Eseményt küldő kód hozzáadása a névtér témaköréhez

  1. Cserélje le a tartalomra Program.cs a következő kódot. A fontos lépések körvonalazódnak, és a kód megjegyzéseiben további információk találhatók.

    Fontos

    Frissítse a kódrészlet helyőrző értékeit (<NAMESPACE-ENDPOINT> , <TOPIC-NAME>, <TOPIC-ACCESS-KEY>) a névtérvégponttal, a témakör nevével és a témakörkulcsával.

    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. Hozza létre a projektet, és győződjön meg arról, hogy nincsenek hibák.

  3. Futtassa a programot, és várja meg a megerősítést kérő üzenetet.

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

    Fontos

    A legtöbb esetben egy-két percig tart, amíg a szerepkör-hozzárendelés propagálása az Azure-ban megtörténik. Ritkán akár nyolc percig is eltarthat. Ha hitelesítési hibákat kap a kód első futtatásakor, várjon néhány percet, és próbálkozzon újra.

  4. Az Azure Portalon kövesse az alábbi lépéseket:

    1. Lépjen az Event Grid-névtérre.

    2. Az Áttekintés lapon láthatja a diagram névterében közzétett események számát.

      Képernyőkép az Event Grid Névtér oldalról az Azure Portalon.

Üzenetek lekérése a témakörből

Ebben a szakaszban egy .NET-konzolalkalmazást hoz létre, amely üzeneteket fogad a témakörből.

Projekt létrehozása a közzétett CloudEvents fogadásához

  1. A Megoldáskezelő ablakban kattintson a jobb gombbal az EventGridQuickStart megoldásra, mutasson a Hozzáadás pontra, és válassza az Új projekt lehetőséget.
  2. Válassza a Konzolalkalmazás lehetőséget, majd a Tovább gombot.
  3. Írja be az EventReceiver nevet a projektnévhez, és válassza a Létrehozás lehetőséget.
  4. A Megoldáskezelő ablakban kattintson a jobb gombbal az EventReceiver elemre, és válassza a Beállítás indítási projektként lehetőséget.

NuGet-csomagok hozzáadása a projekthez

  1. Válassza az > Csomagkezelő konzol lehetőséget a menüből.

  2. Futtassa a következő parancsot az Azure.Messaging.EventGrid NuGet-csomag telepítéséhez. Ha még nincs beállítva, válassza az EventReceiver lehetőséget az Alapértelmezett projekthez .

    Install-Package Azure.Messaging.EventGrid.Namespaces
    

    Képernyőkép a Csomagkezelő konzolon kiválasztott EventReceiver-projektről.

Adja hozzá a kódot, hogy eseményeket fogadjon a témakörből

Ebben a szakaszban kódot ad hozzá az üzenetek üzenetsorból való lekéréséhez.

  1. Az osztályon Program belül adja hozzá a következő kódot:

    Fontos

    Frissítse a kódrészlet helyőrző értékeit (<NAMESPACE-ENDPOINT> , <TOPIC-NAME>, <TOPIC-ACCESS-KEY>) <TOPIC-SUBSCRIPTION-NAME>a névtérvégponttal, a témakör nevével, a témakör kulcsával és a témakör előfizetésének nevével.

    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. Fűzze hozzá a következő metódusokat az Program osztály végéhez.

    // 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. A Megoldáskezelő ablakban kattintson a jobb gombbal az EventReceiver projektre, és válassza a Beállítás indítási projektként lehetőséget.

  4. Hozza létre a projektet, és győződjön meg arról, hogy nincsenek hibák.

  5. Futtassa az EventReceiver alkalmazást, és ellenőrizze, hogy a kimeneti ablakban megjelenik-e a három esemény.

    Képernyőkép a Fogadó alkalmazás kimenetéről.

Az erőforrások eltávolítása

Lépjen az Event Grid-névtérre az Azure Portalon, és az Azure PortalOn a Törlés gombra kattintva törölje az Event Grid-névteret és a benne lévő témakört.

Lásd: .NET API-referencia.