Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto rychlém startu provedete následující kroky:
Pomocí Azure Portal vytvořte obor názvů služby Service Bus.
Pomocí webu Azure Portal vytvoříme frontu služby Service Bus.
Napište konzolovou aplikaci .NET, která odešle sadu zpráv do fronty.
Napište konzolovou aplikaci .NET pro příjem těchto zpráv z fronty.
Tento rychlý start obsahuje podrobné pokyny k implementaci jednoduchého scénáře odeslání dávky zpráv do fronty služby Service Bus a jejich přijetí. Přehled klientské knihovny .NET najdete v klientské knihovně služby Azure Service Bus pro .NET. Další ukázky najdete v ukázkách service bus .NET na GitHubu.
Požadavky
Pokud s touto službou teprve začínáte, přečtěte si před tímto rychlým startem přehled služby Service Bus.
- Předplatné Azure. Pokud chcete používat služby Azure, včetně Služby Azure Service Bus, 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. Stále můžete používat klientskou knihovnu Service Bus s předchozími jazykovými verzemi jazyka C#, ale syntaxe se může lišit. Pokud chcete použít nejnovější syntaxi, doporučujeme nainstalovat .NET 6.0 nebo novější a nastavit jazyk
latest
na 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řit obor názvů v Azure portálu
Pokud chcete začít používat entity zasílání zpráv Service Bus v Azure, vytvořte obor názvů s názvem, který je jedinečný v rámci Azure. Obor názvů poskytuje kontejner oborů pro prostředky služby Service Bus, jako jsou fronty a témata, ve vaší aplikaci.
Vytvoření oboru názvů:
Přihlaste se k portálu Azure.
V levém horním rohu vyberte kontextovou nabídku a přejděte na stránku Všechny služby.
Na levém navigačním panelu vyberte Integrace.
Posuňte se dolů ke službám zasílání zpráv>Service Bus a vyberte Vytvořit.
Na kartě Základy na stránce Vytvořit obor názvů postupujte podle těchto kroků:
V části Předplatné zvolte předplatné Azure, ve kterém chcete vytvořit obor názvů.
Pro skupinu prostředků zvolte existující skupinu prostředků nebo vytvořte novou.
Zadejte název oboru názvů, který splňuje následující konvence pojmenování.
- Název musí být jedinečný v rámci Azure. Systém okamžitě kontroluje, jestli je název dostupný.
- Délka názvu je nejméně 6 a maximálně 50 znaků.
- Název může obsahovat pouze písmena, číslice, pomlčky
-
. - Název musí začínat písmenem a končit písmenem nebo číslem.
- Název nekončí
-sb
nebo-mgmt
.
V části Umístění zvolte oblast pro hostování vašeho oboru názvů.
V části Cenová úroveň vyberte cenovou úroveň (Basic, Standard nebo Premium) pro obor názvů. Pro účely tohoto rychlého startu vyberte Standard.
Pokud vyberete úroveň Premium , můžete pro obor názvů povolit geografickou replikaci . Funkce geografické replikace zajišťuje, aby se metadata a data oboru názvů průběžně replikovaly z primární oblasti do jedné nebo více sekundárních oblastí.
Důležité
Pokud chcete použít témata a předplatná, zvolte Standard nebo Premium. Témata a předplatná se nepodporují v cenové úrovni Basic.
Pokud jste vybrali cenovou úroveň Premium , zadejte počet jednotek zasílání zpráv. Úroveň Premium poskytuje izolaci prostředků na úrovni procesoru a paměti, aby každá úloha běžela izolovaně. Kontejner prostředků se nazývá jednotka zasílání zpráv. Namespace Premium má alespoň jednu jednotku pro zasílání zpráv. Pro každý obor názvů služby Service Bus Premium můžete vybrat 1, 2, 4, 8 nebo 16 jednotek zasílání zpráv. Další informace najdete v tématu Úroveň zasílání zpráv služby Service Bus úrovně Premium.
Vyberte Zkontrolovat a vytvořit v dolní části stránky.
Na stránce Zkontrolovat a vytvořit zkontrolujte nastavení a vyberte Vytvořit.
Po úspěšném nasazení prostředku vyberte na stránce nasazení Přejít k prostředku.
Zobrazí se domovská stránka vašeho prostředí sběrnice služeb.
Vytvořte frontu v Azure portálu
Na stránce Obor názvů Service Bus rozbalte Entity v navigační nabídce vlevo a vyberte Fronty.
Na stránce Fronty na panelu nástrojů vyberte + Fronta.
Zadejte název fronty. U ostatních hodnot ponechte výchozí hodnoty.
Vyberte Vytvořit.
Důležité
Pokud s Azure začínáte, může být Připojovací řetězec jednodušší sledovat. Výběrem karty Připojovací řetězec zobrazíte pokyny k použití připojovacího řetězce v tomto rychlém průvodci. Doporučujeme používat možnost bez hesla v reálných aplikacích a produkčních prostředích.
Ověření aplikace v Azure
Tento článek ukazuje dva způsoby připojení ke službě Azure Service Bus: bez hesla a připojovací řetězec.
První možnost vám ukáže, jak použít váš hlavní objekt zabezpečení v Microsoft Entra ID a řízení přístupu na základě role (RBAC) pro připojení k oboru názvů služby Service Bus. Nemusíte si dělat starosti s pevně zakódovaným připojovacím řetězcem v kódu, v konfiguračním souboru nebo v zabezpečeném úložišti, jako je Azure Key Vault.
Druhá možnost ukazuje, jak pomocí připojovacího řetězce provést připojení k oboru názvů služby Service Bus. Pokud s Azure začínáte, možná zjistíte, že připojovací řetězec možnost je jednodušší postupovat. Doporučujeme používat možnost bez hesla v reálných aplikacích a produkčních prostředích. Další informace najdete v tématu Ověřování a autorizace služby Service Bus. Další informace o ověřování bez hesla najdete v tématu Ověřování aplikací .NET.
Přiřazení rolí uživateli Microsoft Entra
Při místním vývoji se ujistěte, že uživatelský účet, který se připojuje ke službě Azure Service Bus, má správná oprávnění. K odesílání a příjmu zpráv potřebujete roli Vlastník dat služby Azure Service Bus . K přiřazení této role potřebujete roli Správce uživatelských přístupů nebo jinou roli, která tuto Microsoft.Authorization/roleAssignments/write
akci zahrnuje.
Role Azure RBAC můžete uživateli přiřadit pomocí webu Azure Portal, Azure CLI nebo Azure PowerShellu. Další informace o dostupných oborech pro přiřazení rolí najdete v tématu Vysvětlení rozsahu pro Azure RBAC.
Následující příklad přiřadí roli k vašemu uživatelskému Azure Service Bus Data Owner
účtu, který poskytuje úplný přístup k prostředkům služby Azure Service Bus. V reálném scénáři postupujte podle principu nejnižšího oprávnění a udělte uživatelům pouze minimální oprávnění potřebná pro bezpečnější produkční prostředí.
Předdefinované role Azure pro Azure Service Bus
Pro Službu Azure Service Bus je správa oborů názvů a všech souvisejících prostředků prostřednictvím portálu Azure a rozhraní API pro správu prostředků Azure už chráněná pomocí modelu Azure RBAC. Azure poskytuje následující předdefinované role Azure pro autorizaci přístupu k oboru názvů služby Service Bus:
- Vlastník dat služby Azure Service Bus: Povoluje přístup k datům k jmennému prostoru služby Service Bus a jeho entitám, včetně front, témat, odběrů a filtrů. Člen této role může odesílat a přijímat zprávy z front, témat nebo předplatných.
-
Odesílatel dat služby Azure Service Bus: Pomocí této role můžete udělit
send
přístup k oboru názvů služby Service Bus a jeho entitám. -
Příjemce dat služby Azure Service Bus: Pomocí této role můžete udělit
receive
přístup k oboru názvů služby Service Bus a jeho entitám.
Pokud chcete vytvořit vlastní roli, přečtěte si téma Práva potřebná pro operace služby Service Bus.
Přidání uživatele Microsoft Entra do role vlastníka služby Azure Service Bus
Přidejte své uživatelské jméno Microsoft Entra do role Vlastník dat pro Azure Service Bus na úrovni oboru názvů Service Bus. Tato konfigurace umožňuje aplikaci, která běží v kontextu uživatelského účtu, odesílat zprávy do fronty nebo tématu. Může přijímat zprávy z fronty nebo z odběru k tématu.
Důležité
Ve většině případů trvá přiřazení role v Azure minutu nebo dvě. 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.
Pokud nemáte na webu Azure Portal otevřenou stránku Obor názvů služby Service Bus, najděte obor názvů služby Service Bus pomocí hlavního vyhledávacího panelu nebo levé navigace.
Na stránce Přehled vyberte v nabídce vlevo řízení přístupu (IAM ).
Na stránce Řízení přístupu (IAM) vyberte kartu Přiřazení rolí.
V horní nabídce vyberte + Přidat a pak přidejte přiřazení role.
Pomocí vyhledávacího pole vyfiltrujte výsledky podle požadované role. V tomto příkladu vyhledejte
Azure Service Bus Data Owner
a vyberte odpovídající výsledek. Pak zvolte Další.V části Přiřadit přístup vyberte Uživatel, skupina nebo instanční objekt a pak zvolte + Vybrat členy.
V dialogovém okně vyhledejte své uživatelské jméno Microsoft Entra (obvykle vaše user@domain e-mailová adresa) a pak v dolní části dialogového okna zvolte Vybrat .
Vyberte Zkontrolovat a přiřadit, a přejděte na poslední stránku, a pak znovu zkontrolujte a přiřaďte k dokončení procesu.
Spuštění sady Visual Studio
K názvovému prostoru služby Service Bus můžete autorizovat přístup pomocí následujícího postupu:
Spusťte Visual Studio. Pokud se zobrazí okno Začínáme , vyberte v pravém podokně odkaz Pokračovat bez kódu .
V pravém horním rohu sady Visual Studio vyberte tlačítko Přihlásit se.
Přihlaste se pomocí účtu Microsoft Entra, kterému jste přiřadili roli dříve.
Posílejte zprávy do fronty
V této části se dozvíte, jak vytvořit konzolovou aplikaci .NET pro odesílání zpráv do fronty služby Service Bus.
Poznámka:
Tento rychlý start obsahuje podrobné pokyny k implementaci jednoduchého scénáře odeslání dávky zpráv do fronty služby Service Bus a jejich přijetí. Další ukázky v jiných a pokročilých scénářích najdete v ukázkách .NET služby Service Bus na GitHubu.
Vytvoření konzolové aplikace
Ve Visual Studiu vyberte Soubor ->Nový ->Projekt menu.
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.
Vyberte jazyk C# pro programovací jazyk.
Vyberte konzolu pro typ aplikace.
V seznamu výsledků vyberte konzolovou aplikaci .
Pak vyberte Další.
Zadejte QueueSender pro název projektu, ServiceBusQueueQuickStart pro název řešení a pak vyberte Další.
Na stránce Další informace vyberte Vytvořit, abyste vytvořili řešení a projekt.
Přidání balíčků NuGet do projektu
V nabídce vyberte Nástroje>Správce balíčků NuGet>Konzola správce balíčků.
Spuštěním následujícího příkazu nainstalujte balíček NuGet Azure.Messaging.ServiceBus .
Install-Package Azure.Messaging.ServiceBus
Spuštěním následujícího příkazu nainstalujte balíček NuGet Azure.Identity .
Install-Package Azure.Identity
Přidejte kód pro odesílání zpráv do fronty
Nahraďte obsah
Program.cs
následujícím kódem. Důležité kroky jsou popsané v následující části s dalšími informacemi v komentářích ke kódu.-
Vytvoří objekt ServiceBusClient pomocí objektu
DefaultAzureCredential
.DefaultAzureCredential
automaticky zjistí a použije přihlašovací údaje vašeho uživatelského účtu Visual Studio pro ověřování ve službě Azure Service Bus. - Metoda CreateSender na objektu ServiceBusClient vyvolá vytvoření objektu ServiceBusSender pro konkrétní frontu Service Bus.
- Vytvoří ServiceBusMessageBatch objekt pomocí ServiceBusSender.CreateMessageBatchAsync metoda.
- Přidejte zprávy do dávky pomocí ServiceBusMessageBatch.TryAddMessage.
- Odesílá várku zpráv do fronty služby Service Bus pomocí metody ServiceBusSender.SendMessagesAsync.
Důležité
Aktualizujte zástupné hodnoty (
<NAMESPACE-NAME>
a<QUEUE-NAME>
) ve fragmentu kódu tak, aby obsahovaly názvy vašeho oboru názvů a fronty pro Service Bus.using Azure.Messaging.ServiceBus; using Azure.Identity; // name of your Service Bus queue // 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 queue ServiceBusSender sender; // number of messages to be sent to the queue 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. // // Set the transport type to AmqpWebSockets so that the ServiceBusClient uses the port 443. // If you use the default AmqpTcp, ensure that ports 5671 and 5672 are open. var clientOptions = new ServiceBusClientOptions { TransportType = ServiceBusTransportType.AmqpWebSockets }; //TODO: Replace the "<NAMESPACE-NAME>" and "<QUEUE-NAME>" placeholders. client = new ServiceBusClient( "<NAMESPACE-NAME>.servicebus.windows.net", new DefaultAzureCredential(), clientOptions); sender = client.CreateSender("<QUEUE-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 queue await sender.SendMessagesAsync(messageBatch); Console.WriteLine($"A batch of {numOfMessages} messages has been published to the queue."); } 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();
-
Vytvoří objekt ServiceBusClient pomocí objektu
Sestavte projekt a ujistěte se, že nedošlo k žádným chybám.
Spusťte program a počkejte na potvrzovací zprávu.
A batch of 3 messages has been published to the queue
Důležité
Ve většině případů trvá přiřazení role v Azure minutu nebo dvě. 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.
Na webu Azure Portal postupujte takto:
Přejděte do pracovního prostoru služby Service Bus.
Na stránce Přehled vyberte frontu v dolním prostředním podokně.
Všimněte si hodnot v části Nastavení .
Všimněte si následujících hodnot:
- Hodnota počtu aktivních zpráv pro frontu je teď 3. Pokaždé, když spustíte tuto aplikaci odesílatele bez načtení zpráv, se tato hodnota zvýší o 3.
- Aktuální velikost fronty se zvýší při každém přidání zpráv do fronty.
- V grafu Zprávy v dolní části Metriky vidíte, že fronta obsahuje tři příchozí zprávy.
Přijetí zpráv z fronty
V této části vytvoříte konzolovou aplikaci .NET, která přijímá zprávy z fronty.
Poznámka:
Tento rychlý start obsahuje podrobné pokyny k implementaci scénáře odeslání dávky zpráv do fronty služby Service Bus a jejich následnému přijetí. Další ukázky v jiných a pokročilých scénářích najdete v ukázkách .NET služby Service Bus na GitHubu.
Vytvoření projektu pro příjemce
- V okně Průzkumník řešení klikněte pravým tlačítkem na řešení ServiceBusQueueQuickStart, přejděte na příkaz Přidat a vyberte Nový projekt.
- Vyberte Konzolová aplikace a vyberte Další.
- Jako název projektu zadejte QueueReceivera vyberte Vytvořit.
- V okně Průzkumník řešení klikněte pravým tlačítkem na QueueReceiver a vyberte Nastavit jako spouštěný projekt.
Přidání balíčků NuGet do projektu
V nabídce vyberte Nástroje>Správce balíčků NuGet>Konzola správce balíčků.
Vyberte QueueReceiver pro výchozí projekt.
Spuštěním následujícího příkazu nainstalujte balíček NuGet Azure.Messaging.ServiceBus .
Install-Package Azure.Messaging.ServiceBus
Spuštěním následujícího příkazu nainstalujte balíček NuGet Azure.Identity .
Install-Package Azure.Identity
Přidejte kód pro příjem zpráv z fronty
V této části přidáte kód pro načtení zpráv z fronty.
Program
Do třídy přidejte následující kód:using System.Threading.Tasks; using Azure.Identity; using Azure.Messaging.ServiceBus; // 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 queue ServiceBusProcessor processor;
Na konec
Program
třídy připojte následující metody.// handle received messages async Task MessageHandler(ProcessMessageEventArgs args) { string body = args.Message.Body.ToString(); Console.WriteLine($"Received: {body}"); // complete the message. message is deleted from the queue. await args.CompleteMessageAsync(args.Message); } // handle any errors when receiving messages Task ErrorHandler(ProcessErrorEventArgs args) { Console.WriteLine(args.Exception.ToString()); return Task.CompletedTask; }
Na konec
Program
třídy připojte následující kód. Důležité kroky jsou popsané v následující části s dalšími informacemi v komentářích ke kódu.-
Vytvoří objekt ServiceBusClient pomocí objektu
DefaultAzureCredential
.DefaultAzureCredential
automaticky zjistí a použije přihlašovací údaje vašeho přihlášení ve Visual Studio k ověření v Azure Service Bus. - Vyvolá metodu CreateProcessor na objektu
ServiceBusClient
, aby vytvořil objekt ServiceBusProcessor pro zadanou frontu Service Bus. - Určuje obslužné rutiny pro ProcessMessageAsync a ProcessErrorAsync události ServiceBusProcessor objektu.
- Spustí zpracování zpráv vyvoláním Metody StartProcessingAsync u objektu
ServiceBusProcessor
. - Když uživatel stiskne klávesu pro ukončení zpracování, vyvolá u objektu .
Důležité
Aktualizujte zástupné hodnoty (
<NAMESPACE-NAME>
a<QUEUE-NAME>
) ve fragmentu kódu tak, aby obsahovaly názvy vašeho oboru názvů a fronty pro Service Bus.// 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. // // Set the transport type to AmqpWebSockets so that the ServiceBusClient uses port 443. // If you use the default AmqpTcp, make sure that ports 5671 and 5672 are open. // TODO: Replace the <NAMESPACE-NAME> placeholder var clientOptions = new ServiceBusClientOptions() { TransportType = ServiceBusTransportType.AmqpWebSockets }; client = new ServiceBusClient( "<NAMESPACE-NAME>.servicebus.windows.net", new DefaultAzureCredential(), clientOptions); // create a processor that we can use to process the messages // TODO: Replace the <QUEUE-NAME> placeholder processor = client.CreateProcessor("<QUEUE-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(); }
-
Vytvoří objekt ServiceBusClient pomocí objektu
Dokončená
Program
třída by měla odpovídat následujícímu kódu: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 queue ServiceBusProcessor processor; // 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. // // Set the transport type to AmqpWebSockets so that the ServiceBusClient uses port 443. // If you use the default AmqpTcp, make sure that ports 5671 and 5672 are open. // TODO: Replace the <NAMESPACE-NAME> and <QUEUE-NAME> placeholders var clientOptions = new ServiceBusClientOptions() { TransportType = ServiceBusTransportType.AmqpWebSockets }; client = new ServiceBusClient("<NAMESPACE-NAME>.servicebus.windows.net", new DefaultAzureCredential(), clientOptions); // create a processor that we can use to process the messages // TODO: Replace the <QUEUE-NAME> placeholder processor = client.CreateProcessor("<QUEUE-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(); } // handle received messages async Task MessageHandler(ProcessMessageEventArgs args) { string body = args.Message.Body.ToString(); Console.WriteLine($"Received: {body}"); // complete the message. message is deleted from the queue. await args.CompleteMessageAsync(args.Message); } // handle any errors when receiving messages Task ErrorHandler(ProcessErrorEventArgs args) { Console.WriteLine(args.Exception.ToString()); return Task.CompletedTask; }
Sestavte projekt a ujistěte se, že nedošlo k žádným chybám.
Spusťte aplikaci příjemce. Měly by se zobrazit přijaté zprávy. Stisknutím libovolné klávesy zastavte přijímač a aplikaci.
Wait for a minute and then press any key to end the processing Received: Message 1 Received: Message 2 Received: Message 3 Stopping the receiver... Stopped receiving messages
Znovu zkontrolujte portál. Počkejte několik minut a aktualizujte stránku, pokud se nezobrazují
0
aktivní zprávy.
Další informace
Projděte si následující dokumentaci a ukázky:
- Klientská knihovna služby Azure Service Bus pro .NET – Readme
- Ukázky na GitHubu
- Referenční informace k rozhraní .NET API
- Zjednodušte řešení infrastruktury s využitím rámců vyšší úrovně, jako je NServiceBus
Uvolnění prostředků
Přejděte do oboru názvů služby Service Bus na webu Azure Portal a výběrem možnosti Odstranit na webu Azure Portal odstraňte obor názvů a frontu v něm.
Související obsah
Podívejte se na Začínáme s tématy a předplatnými služby Azure Service Bus (.NET).