Ismerkedés az Azure Service Bus-témakörökkel és -előfizetésekkel (.NET)

Ez a rövid útmutató bemutatja, hogyan küldhet üzeneteket egy Service Bus-témakörnek, és hogyan fogadhat üzeneteket egy előfizetésből az adott témakörbe az Azure.Messaging.ServiceBus .NET-kódtár használatával.

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

  1. Service Bus-névtér létrehozása az Azure Portal használatával.
  2. Service Bus-üzenettéma létrehozása az Azure Portal használatával.
  3. Service Bus-előfizetés létrehozása az üzenettémához az Azure Portal használatával.
  4. Írjon egy .NET-konzolalkalmazást, hogy üzeneteket küldjön a témakörnek.
  5. Írjon egy .NET-konzolalkalmazást az előfizetésből érkező üzenetek fogadásához.

Feljegyzés

Ez a rövid útmutató lépésről lépésre útmutatást nyújt egy egyszerű forgatókönyv megvalósításához, amely egy üzenetköteget küld egy Service Bus-témakörbe, és fogadja ezeket az üzeneteket a témakör előfizetéséből. További példákat a GitHub Service Bus .NET-mintáiban talál.

  • Ez a rövid útmutató az Azure Service Bushoz való csatlakozás két módját mutatja be: kapcsolati sztring és jelszó nélküli. Az első lehetőség bemutatja, hogyan csatlakozhat egy Service Bus-névtérhez egy kapcsolati sztring. A második lehetőség bemutatja, hogyan használhatja a biztonsági tagot a Microsoft Entra-azonosítóban és a szerepköralapú hozzáférés-vezérlésben (RBAC) a Service Bus-névtérhez való csatlakozáshoz. Nem kell aggódnia amiatt, hogy a kódban, konfigurációs fájlban vagy biztonságos tárolóban, például az Azure Key Vaultban van egy kemény kóddal rendelkező kapcsolati sztring. Ha még csak most ismerkedik az Azure-sal, könnyebben követheti a kapcsolati sztring lehetőséget. A jelszó nélküli beállítást a valós alkalmazásokban és éles környezetekben javasoljuk. További információ: Hitelesítés és engedélyezés.

Előfeltételek

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

  • Azure-előfizetés. Az Azure-szolgáltatások, köztük az Azure Service Bus 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 Service Bus ügyfélkódtárat továbbra is használhatja a korábbi C#-nyelvi verziókkal, de a szintaxis eltérő lehet. 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

A Service Bus-üzenetküldési entitások Azure-ban való használatának megkezdéséhez először létre kell hoznia egy, az Azure-ban egyedi névvel rendelkező névteret. A névtér egy hatókör-tárolót biztosít a Service Bus-erőforrásokhoz (üzenetsorokhoz, témakörökhöz stb.) az alkalmazásban.

Névtér létrehozása:

  1. Jelentkezzen be az Azure Portalra.

  2. Lépjen a Minden szolgáltatás lapra.

  3. A bal oldali navigációs sávon válassza az Integráció lehetőséget a kategóriák listájából, vigye az egérmutatót a Service Bus fölé, majd válassza a + Service Bus csempén található gombot.

    Image showing selection of Create a resource, Integration, and then Service Bus in the menu.

  4. A Névtér létrehozása lap Alapszintű címkéjében kövesse az alábbi lépéseket:

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

    2. Erőforráscsoport esetén válasszon ki egy meglévő erőforráscsoportot, amelyben a névtér él, vagy hozzon létre egy újat.

    3. Adja meg a névtér nevét. A névtér nevének meg kell felelnie a következő elnevezési konvencióknak:

      • A névnek egyedinek kell lennie az Azure-ban. A rendszer azonnal ellenőrzi, hogy a név elérhető-e.
      • A név hossza legalább 6 és legfeljebb 50 karakter lehet.
      • A név csak betűket, számokat, "-" kötőjeleket tartalmazhat.
      • A névnek betűvel kell kezdődnie, és betűvel vagy számmal kell végződnie.
      • A név nem "-sb" vagy "-mgmt" végződésű.
    4. A Hely területen válassza ki azt a régiót, amelyben a névteret üzemeltetni kell.

    5. Tarifacsomag esetén válassza ki a névtérhez tartozó tarifacsomagot (Alapszintű, Standard vagy Prémium). Ebben a rövid útmutatóban válassza a Standard lehetőséget.

      Fontos

      Ha témaköröket és előfizetéseket szeretne használni, válassza a Standard vagy a Premium lehetőséget. Az alapszintű tarifacsomag nem támogatja a témaköröket/előfizetéseket.

      Ha a Prémium tarifacsomagot választotta, adja meg az üzenetkezelési egységek számát. A prémium szint erőforrás-elkülönítést biztosít a CPU és a memória szintjén, így minden számítási feladat külön fut. Ennek az erőforrás-tárolónak a neve üzenetkezelési egység. A prémium szintű névtér legalább egy üzenetkezelési egységgel rendelkezik. Minden Service Bus Premium-névtérhez választhat 1, 2, 4, 8 vagy 16 üzenetkezelési egységet. További információ: Service Bus Premium Messaging.

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

      Image showing the Create a namespace page

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

  5. Miután az erőforrás üzembe helyezése sikeres volt, válassza az Erőforrás megnyitása lehetőséget az üzembe helyezési lapon.

    Image showing the deployment succeeded page with the Go to resource link.

  6. Megjelenik a service bus-névtér kezdőlapja.

    Image showing the home page of the Service Bus namespace created.

Üzenettéma létrehozása az Azure Portal használatával

  1. A Service Bus Névtér lapján válassza a bal oldali menü Témakörök elemét.

  2. Válassza a + Témakör lehetőséget az eszköztáron.

  3. Adja meg a témakör nevét. A többi beállítást hagyja az alapértelmezett értékükön.

  4. Válassza a Létrehozás lehetőséget.

    Image showing the Create topic page.

Előfizetés létrehozása az üzenettémához

  1. Válassza ki az előző szakaszban létrehozott témakört .

    Image showing the selection of topic from the list of topics.

  2. A Service Bus-témakör lapján válassza az eszköztár + Előfizetés lehetőséget.

    Image showing the Add subscription button.

  3. Az Előfizetés létrehozása lapon kövesse az alábbi lépéseket:

    1. Írja be az S1 nevet az előfizetéshez.

    2. Adja meg a 3 értéket a maximális szállítási számhoz.

    3. Ezután válassza a Létrehozás lehetőséget az előfizetés létrehozásához.

      Image showing the Create subscription page.

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

Ez a rövid útmutató az Azure Service Bushoz való csatlakozás két módját mutatja be: jelszó nélküli és kapcsolati sztring.

Az első lehetőség bemutatja, hogyan használhatja a biztonsági tagot a Microsoft Entra-azonosítóban és a szerepköralapú hozzáférés-vezérlésben (RBAC) a Service Bus-névtérhez való csatlakozáshoz. Nem kell aggódnia amiatt, hogy a kódban, a konfigurációs fájlban vagy egy biztonságos tárolóban, például az Azure Key Vaultban keményen kódolt kapcsolati sztring kell lennie.

A második lehetőség bemutatja, hogyan csatlakozhat egy Service Bus-névtérhez egy kapcsolati sztring. Ha még nem ismerkedik az Azure-sal, könnyebben követheti a kapcsolati sztring lehetőséget. A jelszó nélküli beállítást a valós alkalmazásokban és éles környezetekben javasoljuk. További információ: Hitelesítés és engedélyezés. A jelszó nélküli hitelesítésről az áttekintési oldalon olvashat bővebben.

Szerepkörök hozzárendelése a Microsoft Entra-felhasználóhoz

Helyi fejlesztéskor győződjön meg arról, hogy az Azure Service Bushoz csatlakozó felhasználói fiók rendelkezik a megfelelő engedélyekkel. Az üzenetek küldéséhez és fogadásához szüksége lesz az Azure Service Bus adattulajdonosi szerepkörére. A szerepkör hozzárendeléséhez szüksége lesz a Felhasználói hozzáférés Rendszergazda istrator szerepkörre, vagy egy másik szerepkörre, amely tartalmazza a Microsoft.Authorization/roleAssignments/write műveletet. Azure RBAC-szerepköröket rendelhet egy felhasználóhoz az Azure Portal, az Azure CLI vagy az Azure PowerShell használatával. További információ a szerepkör-hozzárendelések elérhető hatóköreiről a hatókör áttekintési oldalán.

Az alábbi példa hozzárendeli a szerepkört a Azure Service Bus Data Owner felhasználói fiókjához, amely teljes hozzáférést biztosít az Azure Service Bus-erőforrásokhoz. Egy valós forgatókönyvben kövesse a Minimális jogosultság elvét, hogy a felhasználók csak a biztonságosabb éles környezethez szükséges minimális engedélyeket adják meg a felhasználóknak.

Azure beépített szerepkörök az Azure Service Bushoz

Az Azure Service Bus esetében a névterek és az összes kapcsolódó erőforrás kezelése az Azure Portalon és az Azure Resource Management API-val már védett az Azure RBAC-modell használatával. Az Azure az alábbi beépített Azure-szerepköröket biztosítja a Service Bus-névtérhez való hozzáférés engedélyezéséhez:

  • Azure Service Bus-adattulajdonos: Lehetővé teszi a Service Bus-névtérhez és annak entitásaihoz (üzenetsorokhoz, témakörökhöz, előfizetésekhez és szűrőkhöz) való adathozzáférést. A szerepkör egy tagja üzeneteket küldhet és fogadhat üzenetsorokból vagy témakörökből/előfizetésekből.
  • Azure Service Bus-adatküldő: Ezzel a szerepkörrel hozzáférést adhat a Service Bus-névtérhez és annak entitásaihoz.
  • Azure Service Bus-adatfogadó: Ezzel a szerepkörrel hozzáférést adhat a Service Bus-névtérhez és annak entitásaihoz.

Ha egyéni szerepkört szeretne létrehozni, tekintse meg a Service Bus-műveletekhez szükséges jogosultságokat.

Microsoft Entra-felhasználó hozzáadása az Azure Service Bus tulajdonosi szerepköréhez

Adja hozzá a Microsoft Entra-felhasználónevet az Azure Service Bus-adattulajdonosi szerepkörhöz a Service Bus névtér szintjén. Lehetővé teszi, hogy a felhasználói fiók környezetében futó alkalmazások üzeneteket küldjenek egy üzenetsorba vagy egy témakörbe, és üzeneteket fogadhassanak egy üzenetsorból vagy egy témakör előfizetéséből.

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.

  1. Ha nem nyitotta meg a Service Bus Névtér lapját az Azure Portalon, keresse meg a Service Bus-névteret a fő keresősávon vagy a bal oldali navigációs sávon.

  2. Az áttekintési lapon válassza a Hozzáférés-vezérlés (IAM) lehetőséget a bal oldali menüben.

  3. A Hozzáférés-vezérlés (IAM) lapon válassza a Szerepkör-hozzárendelések lapot.

  4. Válassza a +Hozzáadás lehetőséget a felső menüből, majd a szerepkör-hozzárendelés hozzáadása lehetőséget az eredményül kapott legördülő menüből.

    A screenshot showing how to assign a role.

  5. A keresőmezővel szűrheti az eredményeket a kívánt szerepkörre. Ebben a példában keresse meg Azure Service Bus Data Owner és válassza ki az egyező eredményt. Ezután válassza a Tovább gombot.

  6. A Hozzáférés hozzárendelése területen válassza a Felhasználó, csoport vagy szolgáltatásnév lehetőséget, majd válassza a + Tagok kijelölése lehetőséget.

  7. A párbeszédpanelen keresse meg a Microsoft Entra-felhasználónevet (általában a user@domain e-mail-címét), majd válassza a Párbeszédpanel alján található Kiválasztás lehetőséget.

  8. Válassza a Véleményezés + hozzárendelés lehetőséget a végső lapra való ugráshoz, majd a folyamat befejezéséhez a Véleményezés + hozzárendelés lehetőséget.

A Visual Studio elindítása és bejelentkezés az Azure-ba

A service bus-névtérhez való hozzáférést az alábbi lépések végrehajtásával engedélyezheti:

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

  2. Válassza a Bejelentkezés gombot a Visual Studio jobb felső sarkában.

    Screenshot showing the button to sign in to Azure using Visual Studio.

  3. Jelentkezzen be a korábban szerepkörrel hozzárendelt Microsoft Entra-fiókkal.

    Screenshot showing the account selection.

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

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

Feljegyzés

Ez a rövid útmutató lépésről lépésre útmutatást nyújt egy egyszerű forgatókönyv megvalósításához, amely egy üzenetköteget küld egy Service Bus-témakörbe, és fogadja ezeket az üzeneteket a témakör előfizetéséből. További példákat a GitHub Service Bus .NET-mintáiban talál.

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.

      Image showing the Create a new project dialog box with C# and Console selected

  3. Adja meg a projektnév TopicSender elemét, a Megoldás neve ServiceBusTopicQuickStart értéket, majd válassza a Tovább gombot.
  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.ServiceBus NuGet-csomag telepítéséhez.

    Install-Package Azure.Messaging.ServiceBus
    
  3. Futtassa a következő parancsot az Azure.Identity NuGet-csomag telepítéséhez.

    Install-Package Azure.Identity
    

Üzenetküldési kód hozzáadása a témakörhöz

  1. Cserélje le a Program.cs tartalmát a következő kódra. A fontos lépéseket ebben a szakaszban ismertetjük, a kód megjegyzéseiben pedig további információk találhatók.

    1. Létrehoz egy ServiceBusClient objektumot az DefaultAzureCredential objektum használatával. DefaultAzureCredential Automatikusan felderíti és használja a Visual Studio-bejelentkezés hitelesítő adatait az Azure Service Buson való hitelesítéshez.
    2. Meghívja a CreateSender metódust az ServiceBusClient objektumon, hogy létrehozhasson egy ServiceBusSender objektumot az adott Service Bus-témakörhöz.
    3. ServiceBusMessageBatch objektumot hoz létre a ServiceBusSender.CreateMessageBatchAsync használatával.
    4. Üzenetek hozzáadása a köteghez a ServiceBusMessageBatch.TryAddMessage használatával.
    5. Az üzenetek kötegét a Service Bus-témakörbe küldi a ServiceBusSender.SendMessagesAsync metódussal.

    Fontos

    Frissítse a helyőrző értékeket (<NAMESPACE-NAME> és <TOPIC-NAME>) a kódrészletben a Service Bus-névtér és a témakör nevével.

    using System.Threading.Tasks;
    using Azure.Messaging.ServiceBus;
    using Azure.Identity;
    
    // the client that owns the connection and can be used to create senders and receivers
    ServiceBusClient client;
    
    // the sender used to publish messages to the topic
    ServiceBusSender sender;
    
    // number of messages to be sent to the topic
    const int numOfMessages = 3;
    
    // The Service Bus client types are safe to cache and use as a singleton for the lifetime
    // of the application, which is best practice when messages are being published or read
    // regularly.
    
    //TODO: Replace the "<NAMESPACE-NAME>" and "<TOPIC-NAME>" placeholders.
    client = new ServiceBusClient(
        "<NAMESPACE-NAME>.servicebus.windows.net",
        new DefaultAzureCredential());
    sender = client.CreateSender("<TOPIC-NAME>");
    
    // create a batch 
    using ServiceBusMessageBatch messageBatch = await sender.CreateMessageBatchAsync();
    
    for (int i = 1; i <= numOfMessages; i++)
    {
        // try adding a message to the batch
        if (!messageBatch.TryAddMessage(new ServiceBusMessage($"Message {i}")))
        {
            // if it is too large for the batch
            throw new Exception($"The message {i} is too large to fit in the batch.");
        }
    }
    
    try
    {
        // Use the producer client to send the batch of messages to the Service Bus topic
        await sender.SendMessagesAsync(messageBatch);
        Console.WriteLine($"A batch of {numOfMessages} messages has been published to the topic.");
    }
    finally
    {
        // Calling DisposeAsync on client types is required to ensure that network
        // resources and other unmanaged objects are properly cleaned up.
        await sender.DisposeAsync();
        await client.DisposeAsync();
    }
    
    Console.WriteLine("Press any key to end the application");
    Console.ReadKey();
    
  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.

    A batch of 3 messages has been published to the topic
    

    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 a Service Bus-névtérre.

    2. Az Áttekintés lapon, az alsó-középső panelen váltson a Témakörök lapra, és válassza ki a Service Bus-témakört. Az alábbi példában ez a következő mytopic.

      Select topic

    3. A Service Bus-témakör lap Üzenetek diagramjának alsó Metrikák szakaszában láthatja, hogy három bejövő üzenet van a témakörhöz. Ha nem látja az értéket, várjon néhány percet, és frissítse a lapot a frissített diagram megtekintéséhez.

      Messages sent to the topic

    4. Válassza ki az előfizetést az alsó panelen. Az alábbi példában ez az S1. A Service Bus-előfizetés lapon az aktív üzenet 3-as számként jelenik meg. Az előfizetés megkapta a témakörnek küldött három üzenetet, de még nem vette fel őket a címzett.

      Messages received at the subscription

Üzenetek fogadása előfizetésből

Ebben a szakaszban egy .NET-konzolalkalmazást hoz létre, amely üzeneteket fogad az előfizetésből a Service Bus-témakörbe.

Feljegyzés

Ez a rövid útmutató lépésről lépésre útmutatást nyújt egy egyszerű forgatókönyv megvalósításához, amely egy üzenetköteget küld egy Service Bus-témakörbe, és fogadja ezeket az üzeneteket a témakör előfizetéséből. További példákat a GitHub Service Bus .NET-mintáiban talál.

Projekt létrehozása a fogadó számára

  1. A Megoldáskezelő ablakban kattintson a jobb gombbal a ServiceBusTopicQuickStart 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 a SubscriptionReceiver nevet a projektnévhez, és válassza a Tovább gombot.
  4. A További információ lapon válassza a Létrehozás lehetőséget.
  5. A Megoldáskezelő ablakban kattintson a jobb gombbal az SubscriptionReceiver 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. Válassza a SubscriptionReceiver lehetőséget az Alapértelmezett projekt legördülő listához.

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

    Install-Package Azure.Messaging.ServiceBus
    
  4. Futtassa a következő parancsot az Azure.Identity NuGet-csomag telepítéséhez.

    Install-Package Azure.Identity
    

Kód hozzáadása az előfizetésből érkező üzenetek fogadásához

Ebben a szakaszban kódot ad hozzá az előfizetésből érkező üzenetek lekéréséhez.

  1. Cserélje le a meglévő tartalmat Program.cs a következő tulajdonságokra és metódusokra:

    using System.Threading.Tasks;
    using Azure.Messaging.ServiceBus;
    using Azure.Identity;
    
    // the client that owns the connection and can be used to create senders and receivers
    ServiceBusClient client;
    
    // the processor that reads and processes messages from the subscription
    ServiceBusProcessor processor;    
    
    // handle received messages
    async Task MessageHandler(ProcessMessageEventArgs args)
    {
        string body = args.Message.Body.ToString();
        Console.WriteLine($"Received: {body} from subscription.");
    
        // complete the message. messages is deleted from the subscription. 
        await args.CompleteMessageAsync(args.Message);
    }
    
    // handle any errors when receiving messages
    Task ErrorHandler(ProcessErrorEventArgs args)
    {
        Console.WriteLine(args.Exception.ToString());
        return Task.CompletedTask;
    }
    
  2. Fűzze hozzá a következő kódot a végéhez Program.cs.

    • Létrehoz egy ServiceBusClient objektumot az DefaultAzureCredential objektum használatával. DefaultAzureCredential Automatikusan felderíti és használja a Visual Studio-bejelentkezés hitelesítő adatait az Azure Service Buson való hitelesítéshez.
    • Meghívja a CreateProcessor metódust az ServiceBusClient objektumon, hogy létrehozhasson egy ServiceBusProcessor objektumot a megadott Service Bus-témakörhöz.
    • Megadja az objektum ProcessMessageAsync és ProcessErrorAsync eseményeinek kezelőit ServiceBusProcessor .
    • Megkezdi az üzenetek feldolgozását az objektum StartProcessingAsyncServiceBusProcessor parancsának meghívásával.
    • Amikor a felhasználó lenyom egy billentyűt a feldolgozás befejezéséhez, meghívja a StopProcessingAsyncet az ServiceBusProcessor objektumon.

    Fontos

    Frissítse a kódrészlet helyőrző értékeit (<NAMESPACE-NAME>, <TOPIC-NAME>, <SUBSCRIPTION-NAME>) a Service Bus-névtér, a témakör és az előfizetés nevével.

    További információkért lásd a kód megjegyzéseit.

    // The Service Bus client types are safe to cache and use as a singleton for the lifetime
    // of the application, which is best practice when messages are being published or read
    // regularly.
    //
    // Create the clients that we'll use for sending and processing messages.
    // TODO: Replace the <NAMESPACE-NAME> placeholder
    client = new ServiceBusClient(
        "<NAMESPACE-NAME>.servicebus.windows.net",
        new DefaultAzureCredential());
    
    // create a processor that we can use to process the messages
    // TODO: Replace the <TOPIC-NAME> and <SUBSCRIPTION-NAME> placeholders
    processor = client.CreateProcessor("<TOPIC-NAME>", "<SUBSCRIPTION-NAME>", new ServiceBusProcessorOptions());
    
    try
    {
        // add handler to process messages
        processor.ProcessMessageAsync += MessageHandler;
    
        // add handler to process any errors
        processor.ProcessErrorAsync += ErrorHandler;
    
        // start processing 
        await processor.StartProcessingAsync();
    
        Console.WriteLine("Wait for a minute and then press any key to end the processing");
        Console.ReadKey();
    
        // stop processing 
        Console.WriteLine("\nStopping the receiver...");
        await processor.StopProcessingAsync();
        Console.WriteLine("Stopped receiving messages");
    }
    finally
    {
        // Calling DisposeAsync on client types is required to ensure that network
        // resources and other unmanaged objects are properly cleaned up.
        await processor.DisposeAsync();
        await client.DisposeAsync();
    }
    
  3. A következőképpen kell kinéznie Program.cs :

    using System;
    using System.Threading.Tasks;
    using Azure.Messaging.ServiceBus;
    using Azure.Identity;
    
    // the client that owns the connection and can be used to create senders and receivers
    ServiceBusClient client;
    
    // the processor that reads and processes messages from the subscription
    ServiceBusProcessor processor;
    
    // handle received messages
    async Task MessageHandler(ProcessMessageEventArgs args)
    {
        string body = args.Message.Body.ToString();
        Console.WriteLine($"Received: {body} from subscription.");
    
        // complete the message. messages is deleted from the subscription. 
        await args.CompleteMessageAsync(args.Message);
    }
    
    // handle any errors when receiving messages
    Task ErrorHandler(ProcessErrorEventArgs args)
    {
        Console.WriteLine(args.Exception.ToString());
        return Task.CompletedTask;
    }
    
    // The Service Bus client types are safe to cache and use as a singleton for the lifetime
    // of the application, which is best practice when messages are being published or read
    // regularly.
    //
    // Create the clients that we'll use for sending and processing messages.
    // TODO: Replace the <NAMESPACE-NAME> placeholder
    client = new ServiceBusClient(
        "<NAMESPACE-NAME>.servicebus.windows.net",
        new DefaultAzureCredential());
    
    // create a processor that we can use to process the messages
    // TODO: Replace the <TOPIC-NAME> and <SUBSCRIPTION-NAME> placeholders
    processor = client.CreateProcessor("<TOPIC-NAME>", "<SUBSCRIPTION-NAME>", new ServiceBusProcessorOptions());
    
    try
    {
        // add handler to process messages
        processor.ProcessMessageAsync += MessageHandler;
    
        // add handler to process any errors
        processor.ProcessErrorAsync += ErrorHandler;
    
        // start processing 
        await processor.StartProcessingAsync();
    
        Console.WriteLine("Wait for a minute and then press any key to end the processing");
        Console.ReadKey();
    
        // stop processing 
        Console.WriteLine("\nStopping the receiver...");
        await processor.StopProcessingAsync();
        Console.WriteLine("Stopped receiving messages");
    }
    finally
    {
        // Calling DisposeAsync on client types is required to ensure that network
        // resources and other unmanaged objects are properly cleaned up.
        await processor.DisposeAsync();
        await client.DisposeAsync();
    }
    
  4. Hozza létre a projektet, és győződjön meg arról, hogy nincsenek hibák.

  5. Futtassa a fogadóalkalmazást. Látnia kell a kapott üzeneteket. Nyomja le a kívánt billentyűt a fogadó és az alkalmazás leállításához.

    Wait for a minute and then press any key to end the processing
    Received: Message 1 from subscription: S1
    Received: Message 2 from subscription: S1
    Received: Message 3 from subscription: S1
    
    Stopping the receiver...
    Stopped receiving messages
    
  6. Ellenőrizze újra a portált.

    • A Service Bus-témakör lap Üzenetek diagramján három bejövő és három kimenő üzenet jelenik meg. Ha nem látja ezeket a számokat, várjon néhány percet, és frissítse a lapot a frissített diagram megtekintéséhez.

      Messages sent and received

    • A Service Bus-előfizetés lapon az Aktív üzenet nullának számít. Ennek az az oka, hogy egy fogadó üzeneteket kapott az előfizetéstől, és befejezte az üzeneteket.

      Active message count at the subscription at the end

Következő lépések

Tekintse meg a következő dokumentációt és mintákat: