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:
- Hozzon létre egy Event Grid-névteret az Azure Portal használatával.
- Hozzon létre egy Event Grid-névtér témakört az Azure Portal használatával.
- Hozzon létre egy esemény-előfizetést az Azure Portal használatával.
- .NET-konzolalkalmazás írása üzenetek küldéséhez a témakörbe
- Í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:
Jelentkezzen be az Azure Portalba.
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.
Az Event Grid-névterek lapon válassza a + Létrehozás lehetőséget az eszköztáron.
Az Alapok lapon kövesse az alábbi lépéseket.
Válassza ki azt az Azure-előfizetést , amelyben létre szeretné hozni a névteret.
Válasszon ki egy meglévő erőforráscsoportot , vagy hozzon létre egy erőforráscsoportot.
Adja meg a névtér nevét.
Válassza ki azt a régiót vagy helyet , ahol létre szeretné hozni a névteret.
Válassza a Véleményezés + létrehozás lehetőséget a lap alján.
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.
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
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.
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.
A Témakörök lapon válassza a + Témakör gombot a parancssávon.
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.
Esemény-előfizetés létrehozása
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.
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.
Az Előfizetések lapon válassza a "+ Előfizetés" gombot a parancssávon.
Az Alapismeretek lapon kövesse az alábbi lépéseket:
Adja meg a létrehozni kívánt előfizetés nevét
Ellenőrizze, hogy a kézbesítési séma be van-e állítva a Cloud Events 1.0-s verzióban.
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).
Válassza a Tovább elemet : Szűrők az oldal alján.
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.
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.
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:
Az Event Grid Névtér lapján válassza a Témakörök lehetőséget.
Válassza ki a hozzáférést igénylő témakört.
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.
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
A Visual Studióban válassza a Fájl –>Új –>Projekt menüt.
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.
A programozási nyelvhez válassza a C# lehetőséget.
Válassza a Konzol lehetőséget az alkalmazás típusához.
Válassza a Konzolalkalmazás lehetőséget az eredmények listájából.
Ezután válassza a Tovább gombot.
Adja meg az EventSender nevet a projektnévhez, az EventGridQuickStartot a megoldásnévhez, majd válassza a Tovább gombot.
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
Válassza az Eszközök>NuGet Csomagkezelő> Csomagkezelő konzol lehetőséget a menüből.
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
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; } }
Hozza létre a projektet, és győződjön meg arról, hogy nincsenek hibák.
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.
Az Azure Portalon kövesse az alábbi lépéseket:
Ü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
- 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.
- Válassza a Konzolalkalmazás lehetőséget, majd a Tovább gombot.
- Írja be az EventReceiver nevet a projektnévhez, és válassza a Létrehozás lehetőséget.
- 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
Válassza az Eszközök>NuGet Csomagkezelő> Csomagkezelő konzol lehetőséget a menüből.
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
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.
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("-----------------");
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; } }
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.
Hozza létre a projektet, és győződjön meg arról, hogy nincsenek hibák.
Futtassa az EventReceiver alkalmazást, és ellenőrizze, hogy a kimeneti ablakban megjelenik-e a három esemény.
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.
Kapcsolódó témakörök
Lásd: .NET API-referencia.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: