Megosztás a következőn keresztül:


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. Egyedi névteret biztosít, amely lehetővé teszi több erőforrás használatát ugyanabban az Azure-régióban. Az Azure Event Grid-névtérrel mostantól csoportosíthatja a kapcsolódó erőforrásokat, és egyetlen egységként kezelheti őket az Azure-előfizetésben.

Kövesse a következő szakaszokat egy Azure Event Grid-névtér létrehozásához, megtekintéséhez és kezeléséhez.

Névtér létrehozása:

  1. Jelentkezzen be az Azure Portalba.

  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 az eszköztáron.

    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 azt a régiót vagy helyet , ahol létre szeretné hozni a névteret.

    5. Válassza a Véleményezés + létrehozás lehetőséget a lap alján.

      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, és 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 válassza a Témakörök lehetőséget a bal oldali menü Esemény szakaszában.

  3. A Témakörök lapon válassza a + Témakör gombot a parancssávon.

    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 Gird 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 Eszközök>NuGet Csomagkezelő> 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>, <TOPIC-SUBSCRIPTION-NAME>) 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 Eszközök>NuGet Csomagkezelő> 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.